UPDATETEXT (Transact-SQL)

Применимо к: даSQL Server (все поддерживаемые версии)

Обновляет существующее поле типа text, ntext или image. Используйте UPDATETEXT только для изменения части столбца типа text, ntext или image. Используйте WRITETEXT для обновления и замены всего поля типа text, ntext или image.

Важно!

В будущей версии Microsoft SQL Server этот компонент будет удален. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого пользуйтесь типами данных большого объема и предложением .WRITE инструкции UPDATE.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

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 } ]  

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

BULK
Включает внешние средства для передачи потока двоичных данных. Поток должен быть передан средством на уровне протокола TDS. В отсутствие потока данных обработчик запросов не учитывает параметр BULK.

Важно!

Рекомендуется не использовать параметр BULK в приложениях с поддержкой SQL Server. Этот параметр может быть изменен или удален в следующих версиях SQL Server.

table_name . dest_column_name
Имя обновляемой таблицы и столбца типа text, ntext или image. Имена таблиц и имена столбцов должны соответствовать правилам для идентификаторов. Указание имени базы данных и владельца необязательно.

dest_text_ptr
Значение текстового указателя (возвращается функцией TEXTPTR), который указывает на обновляемые данные типа text, ntext или image. Значение dest_text_ptr должно иметь тип binary( 16 ).

insert_offset
Начальная позиция для обновления. Отсчет начинает с нуля. Для столбцов типа text или imageinsert_offset является числом байтов, которые необходимо пропустить с начала существующего столбца перед вставкой новых данных. Для столбцов типа ntextinsert_offset является числом символов (каждый символ ntext занимает 2 байта). Существующие данные типа text, ntext или image, начиная с этой начальной позиции (отсчет начинается с нуля), сдвигаются вправо, чтобы освободить место для новых данных. При значении 0 новые данные вставляются в начало существующих данных. Если значение равно NULL, новые данные добавляются в конец существующих.

delete_length
Длина удаляемых данных из существующего столбца типа text, ntext или image начиная с позиции, указанной в аргументе insert_offset. Значение delete_length указывается в байтах для столбцов типа text и image и в символах для столбцов типа ntext. Каждый символ ntext занимает 2 байта. При значении 0 данные не удаляются. При значении NULL удаляются все данные с позиции, указанной аргументом insert_offset, до конца существующего столбца типа text или image.

WITH LOG
Ведение журнала определяется моделью восстановления, действующей для базы данных.

inserted_data
Данные, которые необходимо вставить в существующий столбец типа text, ntext или image в расположении insert_offset. Это одно значение типа char, nchar, varchar, nvarchar, binary, varbinary, text, ntext или image. Аргумент inserted_data может быть литералом или переменной.

table_name.src_column_name
Имя таблицы и столбца типа text, ntext или image, используемого в качестве источника вставляемых данных. Имена таблиц и имена столбцов должны соответствовать правилам для идентификаторов.

src_text_ptr
Значение текстового указателя (возвращается функцией TEXTPTR), который указывает на столбец text, ntext или image, используемый в качестве источника вставляемых данных.

Примечание

Значение scr_text_ptr не должно совпадать со значением dest_text_ptr.

Комментарии

Вставленные данные могут быть константой inserted_data, именем таблицы, именем столбца или указателем на текст.

Операция обновления Параметры UPDATETEXT
Для замены существующих данных Укажите значение аргумента insert_offset, отличное от NULL, ненулевое значение аргумента delete_length и новые вставляемые данные.
Для удаления существующих данных Укажите значение аргумента insert_offset, отличное от NULL, и ненулевое значение delete_length. Не указывайте вставляемые данные.
Для вставки новых данных Укажите значение аргумента insert_offset, значение аргумента delete_length, равное 0, и новые вставляемые данные.

Для достижения оптимальной производительности рекомендуется вставлять или обновлять данные типа text, ntext и image фрагментами, размер которых кратен 8040 байт.

В SQL Server внутристрочные текстовые указатели на данные типа text, ntext или image могут существовать, но быть неверными. Дополнительные сведения о параметре text in row см. в разделе sp_tableoption (Transact-SQL). Сведения о допустимости указателей текста см. в разделе sp_invalidate_textptr (Transact-SQL).

Для присвоения столбцам типа text значения NULL используйте функцию WRITETEXT. Функция UPDATETEXT записывает в столбцы типа text пустую строку.

Разрешения

Необходимо разрешение UPDATE на указанную таблицу.

Примеры

Следующий пример присваивает локальной переменной @ptrval значение текстового указателя и использует UPDATETEXT для исправления грамматической ошибки.

Примечание

Чтобы запустить данный пример, требуется установить базу данных 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  

См. также

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