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
См. также
Справочник
@@TEXTSIZE (Transact-SQL)
UPDATETEXT (Transact-SQL)
WRITETEXT (Transact-SQL)