UPDATETEXT (Transact-SQL)
Обновляет существующее поле 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 } ]
Аргументы
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