UPDATETEXT (Transact-SQL)
Actualiza un campo text, ntext o image existente. Utilice UPDATETEXT solo 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.
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 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 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 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 de tipo 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.
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 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. Para obtener información acerca de 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