Compartilhar via


READTEXT (Transact-SQL)

Lê valores text, ntext ou image de uma coluna text, ntext ou image, começando em um deslocamento especificado e lendo o número especificado de bytes.

Observação importanteImportante

Esse recurso será removido em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam. Use a função SUBSTRING em seu lugar.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

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

Argumentos

  • table**.**column
    É o nome de uma tabela e uma coluna a partir das quais a leitura será feita. Os nomes de tabela e de coluna devem estar em conformidade com as regras para identificadores. A especificação dos nomes de tabela e coluna é necessária; entretanto, a especificação do nome do banco de dados e de nomes de proprietário é opcional.

  • text_ptr
    É um ponteiro de texto válido. text_ptr deve ser binary(16).

  • offset
    É o número de bytes (quando os tipos de dados text ou image forem usados) ou caracteres (quando o tipo de dados ntext for usado) a serem ignorados antes de iniciar a leitura dos dados text, image ou ntext.

  • size
    É o número de bytes (quando os tipos de dados text ou image forem usados) ou caracteres (quando o tipo de dados ntext for usado) de dados a serem lidos. Se size for 0, 4 KB bytes de dados serão lidos.

  • HOLDLOCK
    Faz com que o valor de texto seja bloqueado para leituras até o final da transação. Outros usuários podem ler o valor, mas não podem modificá-lo.

Comentários

Use a função TEXTPTR para obter um valor text_ptr válido. TEXTPTR retorna um ponteiro para a coluna text, ntext ou image na linha especificada, ou a coluna text, ntext ou image na última linha retornada pela consulta se mais de uma linha for retornada. Como TEXTPTR retorna uma cadeia binária de 16 bytes, recomenda-se declarar uma variável local para conter o ponteiro de texto e usá-la com READTEXT. Para obter mais informações sobre como declarar uma variável local, consulte DECLARE @local_variable (Transact-SQL).

No SQL Server, podem existir ponteiros de texto em linha, mas podem não ser válidos. Para obter mais informações sobre a opção text in row, consulte sp_tableoption (Transact-SQL). Para obter mais informações sobre como invalidar ponteiros de texto, consulte sp_invalidate_textptr (Transact-SQL).

O valor da função @@TEXTSIZE substitui o tamanho especificado para READTEXT se ele for menor que o tamanho especificado para READTEXT. A função @@TEXTSIZE especifica o limite do número de bytes de dados a serem retornados, definido pela instrução SET TEXTSIZE. Para obter mais informações sobre como definir a configuração de sessão para TEXTSIZE, consulte SET TEXTSIZE (Transact-SQL).

Permissões

As permissões de READTEXT usam como padrão os usuários que têm permissões SELECT na tabela especificada. As permissões são transferíveis quando são transferidas permissões SELECT.

Exemplos

O exemplo a seguir lê do segundo até o vigésimo sexto caracteres da coluna pr_info na tabela pub_info.

ObservaçãoObservação

Para executar este exemplo, você deve instalar o banco de dados de exemplo pubs. Para obter informações sobre como instalar o banco de dados de exemplo pubs, consulte Baixando os bancos de dados de exemplo 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