AGGIORNAMENTO (Transact-SQL)

Si applica a:SQL ServerIstanza 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. Usa i tipi di dati di grande valore e i . Invece la clausola WRITE della UPDATE dichiarazione.

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.

CON 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

Richiede UPDATE il permesso sulla 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)