WRITETEXT (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Managed Instance

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 usar WRITETEXT en las columnas text, ntext e image de vistas.

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 los tipos de datos de valores grandes y la cláusula .WRITE de la instrucción UPDATE en su lugar.

Convenciones de sintaxis de Transact-SQL

Sintaxis

WRITETEXT [BULK]  
  { table.column text_ptr }  
  [ WITH LOG ] { data }  

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

BULK
Hace posible que las herramientas de carga carguen flujos de datos binarios. La herramienta debe proporcionar flujos en el nivel de protocolo TDS. Cuando el flujo de datos no esté presente el procesador de consultas omite la opción BULK.

Importante

Recomendamos que la opción BULK no se utilice en las aplicaciones basadas en SQL Server. Es posible que esta opción se modifique o quite en versiones futuras de SQL Server.

table.column
Es el nombre de la tabla y la columna text, ntext o image que se van a actualizar. Los nombres de tablas y columnas deben cumplir 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 a los datos text, ntext o image. text_ptr debe ser de tipo 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
Ignorado 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 almacenar. 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.

Observaciones

Use 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 solo una parte de una columna text, ntext o image, en lugar de la columna completa.

Para mejorar el rendimiento, se recomienda insertar o actualizar los datos de tipo text, ntext e image en fragmentos que sean múltiplos de 8040 bytes.

Si el modelo de recuperación de la base de datos es simple u optimizado para cargas masivas de registros, las operaciones text, ntext e image que usen WRITETEXT se registrarán mínimamente cuando se inserten o se anexen datos nuevos.

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, use 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 usa 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, es posible que existan punteros de texto de fila a datos de tipo text, ntext o image, pero que no sean válidos. Para obtener más información sobre la opción "text in row", vea sp_tableoption (Transact-SQL). Para más información sobre cómo invalidar punteros de texto, vea sp_invalidate_textptr (Transact-SQL).

Permisos

Requiere el permiso UPDATE en la base de datos especificada. El permiso se puede transferir cuando se transfiere el permiso UPDATE.

Ejemplos

En el ejemplo siguiente el puntero de texto se sitúa en la variable local @ptrval y, a continuación, WRITETEXT sitúa 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.

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  

Consulte también

Tipos de datos (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
DELETE (Transact-SQL)
SELECT (Transact-SQL)
Instrucciones SET (Transact-SQL)
UPDATETEXT (Transact-SQL)