UPDATETEXT (Transact-SQL)

Actualiza un campo text, ntext o image existente. Utilice UPDATETEXT sólo para cambiar una parte de una columna text, ntext o image existente. Utilice WRITETEXT para actualizar y reemplazar un campo text, ntext o image completo.

Nota importanteImportante

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

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

UPDATETEXT { 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

  • table_name**.**dest_column_name
    Es el nombre de la tabla y la columna text, ntext o image que se actualizarán. Los nombres de las tablas y de las columnas se deben ajustar a las reglas para 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 deben actualizar. dest_text_ptr debe ser de tipo 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 debe omitir desde el principio de la columna existente antes de insertar nuevos datos. En columnas ntext, insert_offsetes el número de caracteres (cada carácter ntext usa 2 bytes).Los datos text, ntext o image existentes que empiecen en esta posición de inicio a partir de 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_lengthse especifica en bytes para columnas text e image, y en caracteres para columnas ntext.Cada carácter ntext utiliza 2 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 ubicación de insert_offset. Es un único 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 utiliza 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 utilizada como origen de los datos insertados.

    [!NOTA]

    El valor de scr_text_ptrno debe ser igual que el valor de dest_text_ptr.

Notas

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 de insert_offset que no sea NULL, un valor de delete_length que no sea cero y los nuevos datos que se deban insertar.

Para eliminar datos existentes

Especifique un valor insert_offset que no sea NULL y un valor de delete_length distinto de cero. No especifique nuevos datos para la inserción.

Para insertar nuevos datos

Especifique el valor de insert_offset, un valor 0 en delete_length y los nuevos datos que se deban insertar.

Para aumentar el rendimiento, se recomienda insertar o actualizar datos de tipo text, ntext e image en tamaños de fragmentos que sean múltiplos de 8.040 bytes.

En SQL Server, es posible que existan punteros de texto consecutivos para datos de tipo text, ntext o image pero que no sean válidos. Par 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 con valores NULL, utilice UPDATETEXT cuando el nivel de compatibilidad sea igual a 65. Si el nivel de compatibilidad es igual a 70, utilice WRITETEXT para inicializar columnas text con NULL; de lo contrario, UPDATETEXT inicializa columnas text con una cadena vacía. Para obtener más información sobre cómo establecer los niveles de compatibilidad, vea sp_dbcmptlevel (Transact-SQL).

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. 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'
UPDATETEXT pub_info.pr_info @ptrval 88 1 'b';
GO
ALTER DATABASE pubs SET RECOVERY FULL;
GO