UPDATETEXT (Transact-SQL)UPDATETEXT (Transact-SQL)

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions)

Обновляет существующее поле типа text, ntext или image.Updates an existing text, ntext, or image field. Используйте UPDATETEXT только для изменения части столбца типа text, ntext или image.Use UPDATETEXT to change only a part of a text, ntext, or image column in place. Используйте WRITETEXT для обновления и замены всего поля типа text, ntext или image.Use WRITETEXT to update and replace a whole text, ntext, or image field.

Важно!

В будущей версии Microsoft SQL Server этот компонент будет удален.This feature will be removed in a future version of Microsoft SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Вместо этого пользуйтесь типами данных большого объема и предложением . WRITE инструкции UPDATE.Use the large-value data types and the . WRITE clause of the UPDATE statement instead.

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

СинтаксисSyntax

  
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 и более ранних версий, см. в статье Документация по предыдущим версиям.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

АргументыArguments

BULKBULK
Включает внешние средства для передачи потока двоичных данных.Enables upload tools to upload a binary data stream. Поток должен быть передан средством на уровне протокола TDS.The stream must be provided by the tool at the TDS protocol level. В отсутствие потока данных обработчик запросов не учитывает параметр BULK.When the data stream is not present the query processor ignores the BULK option.

Важно!

Рекомендуется не использовать параметр BULK в приложениях с поддержкой SQL ServerSQL Server.We recommend that the BULK option not be used in SQL ServerSQL Server-based applications. Этот параметр может быть изменен или удален в следующих версиях SQL ServerSQL Server.This option might be changed or removed in a future version of SQL ServerSQL Server.

table_name .table_name . dest_column_namedest_column_name
Имя обновляемой таблицы и столбца типа text, ntext или image.Is the name of the table and text, ntext, or image column to be updated. Имена таблиц и имена столбцов должны соответствовать правилам для идентификаторов.Table names and column names must comply with the rules for identifiers. Указание имени базы данных и владельца необязательно.Specifying the database name and owner names is optional.

dest_text_ptrdest_text_ptr
Значение текстового указателя (возвращается функцией TEXTPTR), который указывает на обновляемые данные типа text, ntext или image.Is a text pointer value (returned by the TEXTPTR function) that points to the text, ntext, or image data to be updated. Значение dest_text_ptr должно иметь тип binary( 16 ).dest_text_ptr must be binary( 16 ).

insert_offsetinsert_offset
Начальная позиция для обновления. Отсчет начинает с нуля.Is the zero-based starting position for the update. Для столбцов типа text или *image***insert_offset является числом байтов, которые необходимо пропустить с начала существующего столбца перед вставкой новых данных.For text or image columns, insert_offset is the number of bytes to skip from the start of the existing column before inserting new data. Для столбцов типа *ntext***insert_offset является числом символов (каждый символ ntext занимает 2 байта).For ntext columns, insert_offsetis the number of characters (each ntext character uses 2 bytes). Существующие данные типа text, ntext или image, начиная с этой начальной позиции (отсчет начинается с нуля), сдвигаются вправо, чтобы освободить место для новых данных.The existing text, ntext, or image data starting at this zero-based starting position is shifted to the right to make room for the new data. При значении 0 новые данные вставляются в начало существующих данных.A value of 0 inserts the new data at the beginning of the existing data. Если значение равно NULL, новые данные добавляются в конец существующих.A value of NULL appends the new data to the existing data value.

delete_lengthdelete_length
Длина удаляемых данных из существующего столбца типа text, ntext или image начиная с позиции, указанной в аргументе insert_offset.Is the length of data to delete from the existing text, ntext, or image column, starting at the insert_offset position. Значение delete_length указывается в байтах для столбцов типа text и image и в символах для столбцов типа ntext.The delete_lengthvalue is specified in bytes for text and image columns and in characters for ntext columns. Каждый символ ntext занимает 2 байта.Each ntext character uses 2 bytes. При значении 0 данные не удаляются.A value of 0 deletes no data. При значении NULL удаляются все данные с позиции, указанной аргументом insert_offset, до конца существующего столбца типа text или image.A value of NULL deletes all data from the insert_offset position to the end of the existing text or image column.

WITH LOGWITH LOG
Ведение журнала определяется моделью восстановления, действующей для базы данных.Logging is determined by the recovery model in effect for the database.

inserted_datainserted_data
Данные, которые необходимо вставить в существующий столбец типа text, ntext или image в расположении insert_offset.Is the data to be inserted into the existing text, ntext, or image column at the insert_offset location. Это одно значение типа char, nchar, varchar, nvarchar, binary, varbinary, text, ntext или image.This is a single char, nchar, varchar, nvarchar, binary, varbinary, text, ntext, or image value. Аргумент inserted_data может быть литералом или переменной.inserted_data can be a literal or a variable.

table_name.src_column_nametable_name.src_column_name
Имя таблицы и столбца типа text, ntext или image, используемого в качестве источника вставляемых данных.Is the name of the table and text, ntext, or image column used as the source of the inserted data. Имена таблиц и имена столбцов должны соответствовать правилам для идентификаторов.Table names and column names must comply with the rules for identifiers.

src_text_ptrsrc_text_ptr
Значение текстового указателя (возвращается функцией TEXTPTR), который указывает на столбец text, ntext или image, используемый в качестве источника вставляемых данных.Is a text pointer value (returned by the TEXTPTR function) that points to a text, ntext, or image column used as the source of the inserted data.

Примечание

Значение scr_text_ptr не должно совпадать со значением dest_text_ptr.scr_text_ptr value must not be the same as dest_text_ptrvalue.

КомментарииRemarks

Вставленные данные могут быть константой inserted_data, именем таблицы, именем столбца или указателем на текст.Newly inserted data can be a single inserted_data constant, table name, column name, or text pointer.

Операция обновленияUpdate action Параметры UPDATETEXTUPDATETEXT parameters
Для замены существующих данныхTo replace existing data Укажите значение аргумента insert_offset, отличное от NULL, ненулевое значение аргумента delete_length и новые вставляемые данные.Specify a nonnull insert_offset value, a nonzero delete_length value, and the new data to be inserted.
Для удаления существующих данныхTo delete existing data Укажите значение аргумента insert_offset, отличное от NULL, и ненулевое значение delete_length.Specify a nonnull insert_offset value and a nonzero delete_length. Не указывайте вставляемые данные.Do not specify new data to be inserted.
Для вставки новых данныхTo insert new data Укажите значение аргумента insert_offset, значение аргумента delete_length, равное 0, и новые вставляемые данные.Specify the insert_offset value, a delete_length of 0, and the new data to be inserted.

Для достижения оптимальной производительности рекомендуется вставлять или обновлять данные типа text, ntext и image фрагментами, размер которых кратен 8040 байт.For best performance we recommend that text, ntext and image data be inserted or updated in chunks sizes that are multiples of 8,040 bytes.

В SQL ServerSQL Server внутристрочные текстовые указатели на данные типа text, ntext или image могут существовать, но быть неверными.In SQL ServerSQL Server, in-row text pointers to text, ntext, or image data may exist but may not be valid. Дополнительные сведения о параметре text in row см. в разделе sp_tableoption (Transact-SQL).For information about the text in row option, see sp_tableoption (Transact-SQL). Сведения о допустимости указателей текста см. в разделе sp_invalidate_textptr (Transact-SQL).For information about invalidating text pointers, see sp_invalidate_textptr (Transact-SQL).

Для присвоения столбцам типа text значения NULL используйте функцию WRITETEXT. Функция UPDATETEXT записывает в столбцы типа text пустую строку.To initialize text columns to NULL, use WRITETEXT; UPDATETEXT initializes text columns to an empty string.

РазрешенияPermissions

Необходимо разрешение UPDATE на указанную таблицу.Requires UPDATE permission on the specified table.

ПримерыExamples

Следующий пример присваивает локальной переменной @ptrval значение текстового указателя и использует UPDATETEXT для исправления грамматической ошибки.The following example puts the text pointer into the local variable @ptrval, and then uses UPDATETEXT to update a spelling error.

Примечание

Чтобы запустить данный пример, требуется установить базу данных pubs.To run this example, you must install the pubs database.

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  

См. такжеSee Also

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