讀取 text、ntext 或 image 列中的 text、ntext 或 image 值,從指定的偏移量開(kāi)始讀取指定的字節(jié)數(shù)。
READTEXT { table.column text_ptr offset size } [ HOLDLOCK ]
table.column
是從中讀取的表和列的名稱。表名和列名必須符合標(biāo)識(shí)符的規(guī)則。必須指定表名和列名,不過(guò)可以選擇是否指定數(shù)據(jù)庫(kù)名稱和所有者名稱。
text_ptr
有效文本指針。text_ptr 必須是 binary(16)。
offset
開(kāi)始讀取 text、image 或 ntext 數(shù)據(jù)之前跳過(guò)的字節(jié)數(shù)(使用 text 或 image 數(shù)據(jù)類型時(shí))或字符數(shù)(使用 ntext 數(shù)據(jù)類型時(shí))。使用 ntext 數(shù)據(jù)類型時(shí),offset 是在開(kāi)始讀取數(shù)據(jù)前跳過(guò)的字符數(shù)。使用 text 或 image 數(shù)據(jù)類型時(shí),offset 是在開(kāi)始讀取數(shù)據(jù)前跳過(guò)的字節(jié)數(shù)。
size
是要讀取數(shù)據(jù)的字節(jié)數(shù)(使用 text 或 image 數(shù)據(jù)類型時(shí))或字符數(shù)(使用 ntext 數(shù)據(jù)類型時(shí))。如果 size 是 0,則表示讀取了 4 KB 字節(jié)的數(shù)據(jù)。
HOLDLOCK
使文本值一直鎖定到事務(wù)結(jié)束。其他用戶可以讀取該值,但是不能對(duì)其進(jìn)行修改。
使用 TEXTPTR 函數(shù)獲得有效的 text_ptr 值。如果返回不止一行,TEXTPTR 將返回指向指定行中的 text、ntext 或 image 列的指針,或返回指向查詢所返回的最后一行中的 text、ntext 或 image 列的指針。由于 TEXTPTR 返回 16 字節(jié)的二進(jìn)制字符串,所以最好聲明一個(gè)控制文本指針的局部變量,然后在 READTEXT 中使用該變量。有關(guān)聲明局部變量的更多信息,請(qǐng)參見(jiàn) DECLARE @local_variable。
在 SQL Server 2000 中可能存在無(wú)效的文本指針。有關(guān) text in row 選項(xiàng)的更多信息,請(qǐng)參見(jiàn) sp_tableoption。有關(guān)如何使文本指針無(wú)效的更多信息,請(qǐng)參見(jiàn) sp_invalidate_textptr。
如果 @@TEXTSIZE 函數(shù)的值小于為 READTEXT 指定的大小,它將替代為 READTEXT 指定的大小。@@TEXTSIZE 函數(shù)是對(duì)由 SET TEXTSIZE 語(yǔ)句設(shè)置的返回?cái)?shù)據(jù)字節(jié)數(shù)的限制。有關(guān)如何設(shè)置 TEXTSIZE 會(huì)話設(shè)置的更多信息,請(qǐng)參見(jiàn) SET TEXTSIZE。
READTEXT 權(quán)限默認(rèn)授予對(duì)指定的表具有 SELECT 權(quán)限的用戶。這些權(quán)限可在傳遞 SELECT 權(quán)限時(shí)傳遞。
下例讀取 pub_info 表中 pr_info 列的第 2 個(gè)至第 26 個(gè)字符。
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
相關(guān)文章