READTEXT (Transact-SQL)
Lee los valores text, ntext o image de una columna text, ntext o image; comienza a partir de un desplazamiento especificado y lee el número de bytes determinado.
Importante |
---|
Esta característica se quitará en una versión futura de Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. Utilice la función SUBSTRING en su lugar. |
Sintaxis
READTEXT { table.column text_ptr offset size } [ HOLDLOCK ]
Argumentos
table**.**column
Es el nombre de la tabla y de la columna donde se va a leer. Los nombres de tablas y columnas se deben ajustar a 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. El parámetro text_ptr debe ser de tipo binary(16).offset
Es el número de bytes (cuando se utilizan los tipos de datos text o image) o de caracteres (cuando se utiliza el tipo de datos ntext) que se va a omitir antes de comenzar a leer los datos text, image o ntext.size
Es el número de bytes (cuando se utilizan los tipos de datos text o image) o de caracteres (cuando se utiliza el tipo de datos ntext) de los datos que se van a leer. 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.
Notas
Use la función TEXTPTR para obtener un valor de text_ptr válido.TEXTPTR devuelve un puntero para la columna text, ntext o image de la fila especificada o para la columna text, ntext o image de la última fila devuelta por la consulta si 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 acerca de la declaración de una variable local, vea DECLARE @local\_variable (Transact-SQL).
En SQL Server, pueden existir punteros de texto consecutivos, aunque quizás no sean válidos. Par obtener más información acerca de la opción text in row, vea sp_tableoption (Transact-SQL). Para obtener más información acerca de la invalidación de punteros de texto, vea sp_invalidate_textptr (Transact-SQL).
El valor de la función @@TEXTSIZE reemplaza el tamaño especificado para READTEXT si es menor que éste. 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 acerca de cómo establecer la configuración de sesión para TEXTSIZE, vea SET TEXTSIZE (Transact-SQL).
Permisos
Los permisos READTEXT se conceden de manera predeterminada a los usuarios con permisos SELECT en la tabla especificada. Los permisos se pueden transferir cuando se transfieren los permisos SELECT.
Ejemplos
En el siguiente ejemplo se lee desde el carácter dos al veintiséis de la columna pr_info de la tabla pub_info.
[!NOTA]
Para ejecutar este ejemplo, es necesario instalar la base de datos de ejemplo pubs. Para obtener más información acerca de la instalación de la base de datos de ejemplo pubs, vea Descargar las bases de datos de ejemplo Northwind y 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