Поделиться через


READTEXT (Transact-SQL)

Считывает значения text, ntext или image из столбцов типа text, ntext или image начиная с указанной позиции; считывается указанное число байтов.

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

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

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

Синтаксис

READTEXT { table.column text_ptr offset size } [ HOLDLOCK ]

Аргументы

  • table**.**column
    Имя таблицы и столбца, откуда должны быть считаны данные. Имена таблиц и столбцов должны соответствовать правилам для идентификаторов. Указание имен таблицы и столбца обязательно; однако указание имени базы данных и имен владельца является необязательным.

  • text_ptr
    Действительный текстовый указатель. Аргумент text_ptr должен иметь тип binary(16).

  • offset
    Число байтов (если используются типы данных text или image) или знаков (если используется тип данных ntext), которые следует пропустить прежде, чем приступить к чтению данных text, image или ntext.

  • size
    Число байтов (если используются типы данных text или image) или знаков (если используется тип данных ntext) данных, которое следует считать. Если для аргумента size указано значение 0, считывается 4 КБ данных.

  • HOLDLOCK
    Вызывает блокировку считывания для текстового значения до окончания транзакции. Другие пользователи могут считывать значение, но не могут изменять его.

Замечания

Используйте функцию TEXTPTR, чтобы получить действительное значение аргумента text_ptr. TEXTPTR возвращает указатель на столбец text, ntext или image в указанной строке или на столбец text, ntext или image в последней строке, возвращаемой запросом, если возвращается более одной строки. Поскольку TEXTPTR возвращает 16-байтовую двоичную строку, рекомендуется объявить локальную переменную для хранения текстового указателя, а затем использовать эту переменную с READTEXT. Дополнительные сведения об объявлении локальной переменной см. в разделе DECLARE @local_variable (Transact-SQL).

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

Значение функции @@TEXTSIZE переопределяет размер, указанный для READTEXT, если оно меньше размера, указанного для READTEXT. Функция @@TEXTSIZE указывает предельное число байтов данных, которые должны быть возвращены, как установлено инструкцией SET TEXTSIZE. Дополнительные сведения о том, как определить настройку сеанса для TEXTSIZE, см. в разделе SET TEXTSIZE (Transact-SQL).

Разрешения

Разрешения READTEXT по умолчанию принадлежат пользователям, имеющим разрешения SELECT для указанной таблицы. Разрешения могут быть переданы при передаче разрешений SELECT.

Примеры

В нижеследующем примере считываются знаки со второго по двадцать шестой в столбце pr_info таблицы pub_info.

ПримечаниеПримечание

Для выполнения этого примера необходимо установить образец базы данных pubs. Дополнительные сведения о том, как установить образец базы данных pubs, см. в разделе Загрузка образцов баз данных Northwind и pubs.

USE pubs;
GO
DECLARE @ptrval varbinary(16);
SELECT @ptrval = TEXTPTR(pr_info) 
   FROM pub_info pr INNER JOIN publishers p
      ON pr.pub_id = p.pub_id 
      AND p.pub_name = 'New Moon Books'
READTEXT pub_info.pr_info @ptrval 1 25;
GO