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.
Importante: |
---|
Questa funzionalità verrà rimossa in una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa funzionalità 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. |
Convenzioni della sintassi Transact-SQL
Sintassi
UPDATETEXT { 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
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
In SQL Server 2000 viene ignorato. In SQL Server 2005 la registrazione è determinata dal modello di recupero applicato per il 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] scr_text_ptrnon può essere impostato sullo stesso 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 ulteriori informazioni sull'opzione TEXT IN ROW, vedere sp_tableoption (Transact-SQL). Per ulteriori informazioni sull'invalidazione dei 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
Vedere anche
Riferimento
READTEXT (Transact-SQL)
TEXTPTR (Transact-SQL)
WRITETEXT (Transact-SQL)
Altre risorse
Utilizzo di tipi di dati per valori di grandi dimensioni