UPDATETEXT (Transact-SQL)

Se aplica a: SQL Server Azure SQL Managed Instance

Actualiza un campo text, ntext o image existente. Use UPDATETEXT para cambiar solo una parte de una columna text, ntext o image existente. Use WRITETEXT para actualizar y reemplazar un campo text, ntext o image completo.

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

UPDATETEXT [BULK] { table_name.dest_column_name dest_text_ptr }  
  { NULL | insert_offset }  
     { NULL | delete_length }  
     [ WITH LOG ]  
     [ inserted_data  
    | { table_name.src_column_name src_text_ptr } ]  

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_name . dest_column_name
Es el nombre de la tabla y la columna text, ntext o image que se van a actualizar. Los nombres de las tablas y de las columnas deben cumplir las reglas de los identificadores. La especificación de los nombres de la base de datos y del propietario es opcional.

dest_text_ptr
Es el valor de un puntero de texto (devuelto por la función TEXTPTR) que señala a los datos text, ntext o image que se van a actualizar. dest_text_ptr debe ser binary(16).

insert_offset
Es la posición de inicio de la actualización a partir de cero. En columnas text o image, insert_offset es el número de bytes que se van a omitir desde el principio de la columna existente antes de insertar nuevos datos. En columnas ntext, insert_offset es el número de caracteres (cada carácter ntext usa dos bytes). Los datos text, ntext o image existentes a partir de esta posición de inicio basada en cero se desplazan a la derecha para dejar espacio a los nuevos datos. Un valor 0 inserta los nuevos datos al principio de los datos existentes. Un valor NULL anexa los nuevos datos al valor de datos existente.

delete_length
Es la longitud de los datos que se van a eliminar de la columna text, ntext o image existente, a partir de la posición de insert_offset. El valor delete_length se expresa en bytes en las columnas text e image y en caracteres en las columnas ntext. Cada carácter ntext usa dos bytes. Con un valor 0 no se eliminan datos. Con un valor NULL, se eliminan todos los datos desde la posición de insert_offset hasta el final de la columna text o image existente.

WITH LOG
El registro está determinado por el modelo de recuperación vigente para la base de datos.

inserted_data
Son los datos que se van a insertar en la columna text, ntext o image existente en la posición de insert_offset. Se trata de un solo valor char, nchar, varchar, nvarchar, binary, varbinary, text, ntext o image. inserted_data puede ser un literal o una variable.

table_name.src_column_name
Es el nombre de la tabla y de la columna text, ntext o image que se van a usar como origen de los datos insertados. Los nombres de las tablas y de las columnas se deben ajustar a las reglas para los identificadores.

src_text_ptr
Es un valor de puntero de texto (devuelto por la función TEXTPTR) que señala a una columna text, ntext o image usada como origen de los datos insertados.

Nota:

El valor scr_text_ptr no debe ser igual que el valor dest_text_ptr.

Comentarios

Los datos recién insertados pueden ser una única constante inserted_data, un nombre de tabla, un nombre de columna o un puntero de texto.

Acción de actualización Parámetros de UPDATETEXT
Para sustituir los datos existentes Especifique un valor insert_offset que no sea NULL, un valor delete_length que no sea cero y los nuevos datos que se van a insertar.
Para eliminar datos existentes Especifique un valor insert_offset que no sea NULL y un valor delete_length que no sea cero. No especifique nuevos datos para la inserción.
Para insertar nuevos datos Especifique el valor insert_offset, un valor delete_length cero y los nuevos datos que se van a insertar.

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

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 obtener más información sobre cómo invalidar punteros de texto, vea sp_invalidate_textptr (Transact-SQL).

Para inicializar columnas text en NULL, use WRITETEXT; UPDATETEXT inicializa columnas text en una cadena vacía.

Permisos

Requiere el permiso UPDATE en la base de datos especificada.

Ejemplos

En el ejemplo siguiente se coloca el puntero de texto en la variable local @ptrval; a continuación, se utiliza UPDATETEXT para actualizar un error de ortografía.

Nota:

Para ejecutar este ejemplo, debe instalar la base de datos 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'  
UPDATETEXT pub_info.pr_info @ptrval 88 1 'b';  
GO  
ALTER DATABASE pubs SET RECOVERY FULL;  
GO  

Vea también

READTEXT (Transact-SQL)
TEXTPTR (Transact-SQL)
WRITETEXT (Transact-SQL)