READTEXT (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Lee los valores text, ntext o image de una columna text, ntext o image. Comienza a leer desde un desplazamiento especificado el número de bytes definido.

Importante

Esta característica se quitará en una versión futura de SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. Use la función SUBSTRING en su lugar.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

table.column
Es el nombre de la tabla y de la columna donde se va a leer. Los nombres de tablas y columnas deben cumplir las reglas de los identificadores. Es necesario especificar los nombres de la tabla y de la columna; sin embargo, es opcional especificar el nombre de la base de datos y del propietario.

text_ptr
Es un puntero de texto válido. text_ptr debe ser binary(16).

offset
Es el número de bytes cuando se usan los tipos de datos text o image. Puede ser también el número de bytes de los caracteres cuando el tipo de datos ntext se usa para omitir los datos de text, image o ntext antes de comenzar a leerlos.

size es el número de bytes cuando se usan los tipos de datos text o image. También puede ser el número de bytes de los caracteres cuando se usa el tipo de datos ntext para leer los datos. Si size es 0, se leen 4 KB de datos.

HOLDLOCK
Hace que se bloquee el valor de texto para lectura hasta el final de la transacción. Otros usuarios pueden leer el valor, pero no pueden modificarlo.

Observaciones

Use la función TEXTPTR para obtener un valor de text_ptr válido. TEXTPTR devuelve un puntero a la columna text, ntext o image de la fila especificada. TEXTPRT también puede devolver un puntero a la columna text, ntext o image de la última fila que la consulta devuelve si esta devuelve más de una fila. Debido a que TEXTPTR devuelve una cadena binaria de 16 bytes, se recomienda declarar una variable local para que contenga el puntero de texto y, a continuación, utilizar la variable con READTEXT. Para obtener más información sobre la declaración de una variable local, consulte DECLARE @local_variable (Transact-SQL).

En SQL Server pueden existir punteros de texto consecutivos, aunque quizás no sean válidos. Para obtener más información sobre la opción text in row, consulte sp_tableoption (Transact-SQL). Para obtener más información sobre cómo invalidar punteros de texto, consulte sp_invalidate_textptr (Transact-SQL).

El valor de la función @@TEXTSIZE reemplaza el tamaño especificado para READTEXT si es menor que este. La función @@TEXTSIZE especifica el límite que establece la instrucción SET TEXTSIZE sobre el número de bytes de datos que se va a devolver. Para obtener más información sobre cómo establecer la configuración de sesión para TEXTSIZE, consulte SET TEXTSIZE (Transact-SQL).

Permisos

Los permisos READTEXT se conceden de manera predeterminada a los usuarios con permisos SELECT para la tabla especificada. Los permisos se pueden transferir cuando se transfieren los permisos SELECT.

Ejemplos

En el siguiente ejemplo se lee desde el segundo carácter hasta el 26 de la columna pr_info de la tabla pub_info.

Nota

Para ejecutar este ejemplo, debe instalar la base de datos de ejemplo 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  

Consulte también

@@TEXTSIZE (Transact-SQL)
UPDATETEXT (Transact-SQL)
WRITETEXT (Transact-SQL)