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


READTEXT (Transact-SQL)

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

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

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

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

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

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

См. также

Справочник

@@TEXTSIZE (Transact-SQL)

UPDATETEXT (Transact-SQL)

WRITETEXT (Transact-SQL)