UPDATETEXT (Transact-SQL)
Область применения: SQL Server Управляемый экземпляр SQL Azure
Обновляет существующее поле типа text, ntext или image. Используйте UPDATETEXT только для изменения части столбца типа text, ntext или image. Используйте WRITETEXT для обновления и замены всего поля типа text, ntext или image.
Внимание
Эта функция будет удалена в будущей версии 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 или 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)