READTEXT (Transact-SQL)
Считывает значения text, ntext или image из столбцов типа text, ntext или image начиная с указанной позиции; считывается указанное число байтов.
Важно! |
---|
В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется. Используйте вместо этого функцию SUBSTRING. |
Синтаксис
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