UPDATETEXT (Transact-SQL)

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

Важное примечаниеВажно!

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

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии).

Значок ссылки на раздел Cинтаксические обозначения в 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 } ]

Аргументы

  • 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 или image insert_offset является числом байтов, которые необходимо пропустить с начала существующего столбца, перед вставкой новых данных. Для столбцов ntext аргумент insert_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, отличное от NULL, значение аргумента delete_length, равное 0, и вставляемые данные.

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

В 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)