UPDATETEXT (Transact-SQL)
Si applica a: SQL Server Istanza gestita di SQL di Azure
Aggiorna un campo text, ntext, o image esistente. Usare UPDATETEXT per modificare solo una parte di una colonna esistente di tipo text, ntext o image. Usare WRITETEXT per aggiornare e sostituire un intero campo di tipo text, ntext, o image.
Importante
Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. In alternativa, usare i tipi di dati per valori di grandi dimensioni e la clausola .WRITE dell'istruzione UPDATE.
Convenzioni relative alla 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.
Importante
È consigliabile evitare di usare l'opzione BULK nelle applicazioni basate su SQL Server. Questa opzione potrebbe essere cambiata o rimossa in una versione futura 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 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_offset è il numero di caratteri (ogni carattere ntext usa 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 delete_length è espresso in byte per le colonne di tipo text e image e in caratteri per le colonne ntext. Ogni carattere ntext usa 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
I dati da inserire nella colonna esistente di tipo text, ntext o image nel percorso insert_offset. Si tratta di un singolo valore di tipo 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 usata 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 usata come origine dei dati inseriti.
Nota
Il valore scr_text_ptr non deve essere identico al valore 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 un valore insert_offset, un valore delete_length pari a zero e i nuovi dati da inserire. |
Per ottimizzare le prestazioni, è consigliabile inserire o aggiornare i dati di tipo text, ntext e image in blocchi con dimensioni multiple 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, usare WRITETEXT; UPDATETEXT inizializza le colonne di tipo text su una stringa vuota.
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.
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
Vedi anche
READTEXT (Transact-SQL)
TEXTPTR (Transact-SQL)
WRITETEXT (Transact-SQL)