UPDATETEXT (Transact-SQL)

Aggiorna un campo esistente di tipo text, ntext o image. Utilizzare UPDATETEXT per modificare solo una parte di una colonna esistente di tipo text, ntext o image. Utilizzare WRITETEXT per aggiornare e sostituire un intero campo di tipo text, ntext o image.

Nota importanteImportante

Questa caratteristica verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa caratteristica in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. Utilizzare i tipi di dati per valori di grandi dimensioni e la clausola .WRITE dell'istruzione UPDATE in alternativa.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

UPDATETEXT [BULK] { table_name.dest_column_name dest_text_ptr }
    { NULL | insert_offset }
     { NULL | delete_length }
     [ WITH LOG ]
     [ inserted_data
    | { table_name.src_column_name src_text_ptr } ]

Argomenti

  • BULK
    Consente agli strumenti di caricamento di caricare un flusso di dati binario. Il flusso deve essere fornito dallo strumento a livello di protocollo TDS. Se il flusso di dati non è presente, Query Processor ignora l'opzione BULK.

    Nota importanteImportante

    È consigliabile che l'opzione BULK non venga utilizzata nelle applicazioni basate su SQL Server. Questa opzione potrebbe essere modificata o rimossa in una prossima versione di SQL Server.

  • table_name**.**dest_column_name
    Nome della tabella e della colonna di tipo text, ntext o image da aggiornare. I nomi delle tabelle e delle colonne devono essere conformi alle regole per gli identificatori. I nomi del database e del proprietario sono facoltativi.

  • dest_text_ptr
    Valore di un puntatore di testo restituito dalla funzione TEXTPTR che fa riferimento ai dati di tipo text, ntext o image da aggiornare. dest_text_ptr deve essere di tipo binary(16).

  • insert_offset
    Posizione iniziale in base zero dell'aggiornamento. Per le colonne di tipo text o image, insert_offset rappresenta il numero di byte da ignorare a partire dall'inizio della colonna esistente prima di inserire nuovi dati. Per le colonne di tipo ntext, insert_offsetrappresenta il numero di caratteri. Ogni carattere ntext utilizza 2 byte. I dati di tipo text, ntext o image esistenti che iniziano nella posizione iniziale in base zero specificata vengono spostati a destra per creare spazio per i nuovi dati. Il valore 0 inserisce i nuovi dati all'inizio dei dati esistenti. Il valore NULL accoda i nuovi dati al valore dei dati esistenti.

  • delete_length
    Lunghezza dei dati da eliminare dalla colonna esistente di tipo text, ntext o image, a partire dalla posizione insert_offset. Il valore di delete_lengthviene specificato in byte per le colonne di tipo text e image e in caratteri per le colonne di tipo ntext. Ogni carattere ntext utilizza 2 byte. Il valore 0 non elimina alcun dato. Il valore NULL elimina tutti i dati a partire dalla posizione insert_offset fino alla fine della colonna esistente di tipo text o image.

  • WITH LOG
    La registrazione è definita dal modello di recupero attivo nel database.

  • inserted_data
    Dati da inserire nella colonna esistente di tipo text, ntext o image a partire dalla posizione insert_offset. Si tratta di un singolo valore char, nchar, varchar, nvarchar, binary, varbinary, text, ntext o image. inserted_data può essere un valore letterale o una variabile.

  • table_name.src_column_name
    Nome della tabella e della colonna di tipo text, ntext o image utilizzata come origine dei dati inseriti. I nomi delle tabelle e delle colonne devono essere conformi alle regole per gli identificatori.

  • src_text_ptr
    Valore di un puntatore di testo restituito dalla funzione TEXTPTR che fa riferimento a una colonna di tipo text, ntext o image utilizzata come origine dei dati inseriti.

    Nota

    Il valore di scr_text_ptrnon può essere uguale al valore di dest_text_ptr.

Osservazioni

I dati inseriti possono essere una singola costante inserted_data, un nome di tabella o di colonna oppure un puntatore di testo.

Operazione di aggiornamento

Parametri di UPDATETEXT

Sostituzione di dati esistenti

Specificare un valore insert_offset diverso da Null, un valore delete_length diverso da zero e i nuovi dati da inserire.

Eliminazione di dati esistenti

Specificare un valore insert_offset diverso da Null e un valore delete_length diverso da zero. Non specificare nuovi dati da inserire.

Inserimento di nuovi dati

Specificare il valore insert_offset, un valore pari a 0 per delete_length e i nuovi dati da inserire.

Per prestazioni ottimali, è consigliabile inserire o aggiornare i dati di tipo text, ntext e image in blocchi con dimensioni pari a un multiplo di 8.040 byte.

In SQL Server è possibile che esistano ma non siano validi puntatori di testo all'interno di righe a dati di tipo text, ntext o image. Per informazioni sull'opzione text in row, vedere sp_tableoption (Transact-SQL). Per informazioni su come invalidare i puntatori di testo, vedere sp_invalidate_textptr (Transact-SQL).

Per inizializzare le colonne di tipo text sul valore NULL, utilizzare UPDATETEXT quando il livello di compatibilità è pari a 65. Se il livello di compatibilità è pari a 70, utilizzare WRITETEXT. Per gli altri livelli di compatibilità, UPDATETEXT inizializza le colonne di tipo text su una stringa vuota. Per informazioni sull'impostazione del livello di compatibilità, vedere sp_dbcmptlevel (Transact-SQL).

Autorizzazioni

È richiesta l'autorizzazione UPDATE per la tabella specificata.

Esempi

Nell'esempio seguente il puntatore di testo viene inserito nella variabile locale @ptrval, quindi viene eseguita l'istruzione UPDATETEXT per aggiornare un errore di ortografia.

Nota

Per eseguire l'esempio, è necessario installare il database pubs. Per informazioni sulle procedure di installazione del database pubs, vedere Download dei database di esempio Northwind e pubs.

USE pubs;
GO
ALTER DATABASE pubs SET RECOVERY SIMPLE;
GO
DECLARE @ptrval binary(16);
SELECT @ptrval = TEXTPTR(pr_info) 
   FROM pub_info pr, publishers p
      WHERE p.pub_id = pr.pub_id 
      AND p.pub_name = 'New Moon Books'
UPDATETEXT pub_info.pr_info @ptrval 88 1 'b';
GO
ALTER DATABASE pubs SET RECOVERY FULL;
GO