Condividi tramite


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)