Condividi tramite


READTEXT (Transact-SQL)

Legge i valori di tipo text, ntext o image da una colonna di tipo text, ntext o image a partire dall'offset specificato e fino a leggere il numero di byte specificato.

Nota importanteImportante

Questa caratteristica verrà rimossa a partire da 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 la funzione SUBSTRING.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

READTEXT { table.column text_ptr offset size } [ HOLDLOCK ]

Argomenti

  • table**.**column
    Nome di una tabella e di una colonna in cui leggere i valori. I nomi delle tabelle e delle colonne devono essere conformi alle regole per gli identificatori. È necessario specificare i nomi della tabella e della colonna, mentre il nome del database e il nome del proprietario sono facoltativi.

  • text_ptr
    Puntatore di testo valido. text_ptr deve essere di tipo binary(16).

  • offset
    Numero di byte (se vengono utilizzati i tipi di dati text o image) o caratteri (se viene utilizzato il tipo di dati ntext) da saltare prima di iniziare la lettura dei dati di tipo text, image o ntext.

  • size
    Numero di byte (se vengono utilizzati i tipi di dati text o image) o caratteri (se viene utilizzato il tipo di dati ntext) dei dati da leggere. Se l'argomento size è 0, vengono letti 4 KB di dati.

  • HOLDLOCK
    Impedisce la lettura del valore del testo fino alla fine della transazione. Gli altri utenti possono leggere il valore, ma non possono modificarlo.

Osservazioni

Utilizzare la funzione TEXTPTR per ottenere un valore text_ptr valido. La funzione TEXTPTR restituisce un puntatore alla colonna di tipo text, ntext o image nella riga specificata oppure alla colonna di tipo text, ntext o image nell'ultima riga restituita dalla query se sono state restituite più righe. Poiché TEXTPTR restituisce una stringa binaria di 16 byte, è consigliabile dichiarare una variabile locale in cui archiviare il puntatore di testo e utilizzare quindi la variabile con l'istruzione READTEXT. Per ulteriori informazioni sulla dichiarazione di una variabile locale, vedere DECLARE @local\_variable (Transact-SQL).

In SQL Server i puntatori di testo all'interno di righe possono esistere, ma possono essere non validi. Per ulteriori informazioni sull'opzione text in row, vedere sp_tableoption (Transact-SQL). Per ulteriori informazioni su come invalidare i puntatori di testo, vedere sp_invalidate_textptr (Transact-SQL).

Il valore della funzione @@TEXTSIZE prevale sulle dimensioni specificate per READTEXT se è minore di esse. La funzione @@TEXTSIZE specifica il limite per il numero di byte di dati da restituire impostato dall'istruzione SET TEXTSIZE. Per ulteriori informazioni sull'impostazione della sessione per la funzione TEXTSIZE, vedere SET TEXTSIZE (Transact-SQL).

Autorizzazioni

Le autorizzazioni per l'istruzione READTEXT vengono assegnate per impostazione predefinita agli utenti con autorizzazioni SELECT per la tabella specificata. Le autorizzazioni sono trasferibili, ovvero vengono trasferite insieme alle autorizzazioni SELECT.

Esempi

Nell'esempio seguente vengono letti i caratteri compresi tra il secondo e il ventiseiesimo carattere della colonna pr_info della tabella pub_info.

[!NOTA]

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

USE pubs;
GO
DECLARE @ptrval varbinary(16);
SELECT @ptrval = TEXTPTR(pr_info) 
   FROM pub_info pr INNER JOIN publishers p
      ON pr.pub_id = p.pub_id 
      AND p.pub_name = 'New Moon Books'
READTEXT pub_info.pr_info @ptrval 1 25;
GO