WRITETEXT (Transact-SQL)
Permite la actualización interactiva de registro mínimo de una columna text, ntext o image existente. WRITETEXT sobrescribe completamente los datos existentes en la columna afectada. No se puede utilizar WRITETEXT en las columnas text, ntext, e image de vistas.
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. En su lugar, utilice tipos de datos con valores grandes y la cláusula .WRITE de la instrucción UPDATE. |
Sintaxis
WRITETEXT { table.column text_ptr }
[ WITH LOG ] { data }
Argumentos
table**.**column
Es el nombre de la tabla y de la columna text, ntext o image que se van a actualizar. Los nombres de tablas y columnas se deben ajustar a las reglas de los identificadores. La especificación de los nombres de la base de datos y del propietario es opcional.text_ptr
Es un valor que almacena el puntero en los datos text, ntext o image. text_ptr debe ser binary(16). Para crear un puntero de texto, ejecute una instrucción INSERT o UPDATE con datos que no sean NULL para la columna text, ntext o image.WITH LOG
Omitido por SQL Server. El registro está determinado por el modelo de recuperación vigente para la base de datos.data
Son los datos reales de tipo text, ntext o image que se van a guardar. data puede ser un literal o un parámetro. La longitud máxima de texto que se puede insertar interactivamente con WRITETEXT es de 120 KB aproximadamente para datos de tipo text, ntext e image.
Notas
Utilice WRITETEXT para reemplazar datos de tipo text, ntext e image y UPDATETEXT para modificar datos de tipo text, ntext e image. UPDATETEXT es más flexible debido a que cambia sólo una parte de una columna text, ntext o image en lugar de la columna completa.
Para obtener un rendimiento óptimo, se recomienda insertar o actualizar los datos de tipo text, ntext e image por partes que sean múltiplos de 8040 bytes.
Si el modelo de recuperación de la base de datos es simple o de registro masivo, las operaciones text, ntext e image que utilicen WRITETEXT se registrarán mínimamente cuando se inserten o se anexen datos nuevos. Para obtener más información, vea Operaciones que pueden ser registradas mínimamente.
[!NOTA]
El registro mínimo no se utiliza cuando se actualizan los datos existentes.
Para que WRITETEXT funcione correctamente, la columna ya debe contener un puntero de texto válido.
Si en la tabla no existe texto de fila, SQL Server ahorra espacio al no inicializar las columnas text cuando se colocan valores NULL explícitos o implícitos en las columnas text con INSERT, y no es posible obtener ningún puntero de texto para estos valores NULL. Para inicializar columnas text a NULL, utilice la instrucción UPDATE. Si en la tabla existe texto de fila, no es necesario inicializar a valores NULL la columna de texto y siempre es posible obtener un puntero de texto.
La función SQLPutData de ODBC es más rápida y utiliza menos memoria dinámica que WRITETEXT. Esta función puede insertar hasta 2 gigabytes de datos de tipo text, ntext o image.
En SQL Server, pueden existir punteros de texto de fila para datos de tipo text, ntext o image, pero es posible que no sean válidos. Para obtener más información sobre la opción text in row, vea sp_tableoption (Transact-SQL). Para obtener más información sobre cómo invalidar punteros de texto, vea sp_invalidate_textptr (Transact-SQL).
Permisos
Se requieren permisos UPDATE para la tabla especificada. El permiso se puede transferir cuando se transfiere el permiso UPDATE.
Ejemplos
Este ejemplo coloca el puntero de texto en la variable local @ptrval y, a continuación, WRITETEXT coloca la nueva cadena de texto en la fila a la que señala @ptrval.
[!NOTA]
Para ejecutar este ejemplo, debe instalar la base de datos de ejemplo pubs. Para obtener información sobre cómo instalar la base de datos pubs, vea Descargar las bases de datos de ejemplo Northwind y 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'
WRITETEXT pub_info.pr_info @ptrval 'New Moon Books (NMB) has just released another top ten publication. With the latest publication this makes NMB the hottest new publisher of the year!';
GO
ALTER DATABASE pubs SET RECOVERY SIMPLE;
GO