允許對現(xiàn)有的 text、ntext 或 image 列進行無日志記錄的交互式更新。該語句將徹底重寫受其影響的列中的任何現(xiàn)有數(shù)據(jù)。WRITETEXT 語句不能用在視圖中的 text、ntext 和 image 列上。
WRITETEXT { table.column text_ptr
}
[ WITH LOG ] { data
}
table.column
要更新的表和 text、ntext 或 image 列的名稱。表名和列名必須符合標識符的規(guī)則。有關(guān)更多信息,請參見使用標識符。指定數(shù)據(jù)庫名和所有者名是可選的。
text_ptr
指向 text、ntext 或 image 數(shù)據(jù)的指針的值。text_ptr 的數(shù)據(jù)類型必須為 binary(16)。若要創(chuàng)建文本指針,請對 text、ntext 或 image 列用非 NULL 數(shù)據(jù)執(zhí)行 INSERT 或 UPDATE 語句。有關(guān)創(chuàng)建文本指針的更多信息,請參見 INSERT 或 UPDATE。
WITH LOG
在 Microsoft? SQL Server? 2000 中忽略。日志記錄由數(shù)據(jù)庫的實際恢復模型決定。
data
要存儲的實際 text、ntext 或 image 數(shù)據(jù)。data 可以是字面值,也可以是變量。對于 text、ntext 和 image 數(shù)據(jù),可以用 WRITETEXT 交互插入的文本的最大長度大約是 120 KB。
請使用 WRITETEXT 來替換 text、ntext 和 image 數(shù)據(jù),而用 UPDATETEXT 來修改 text、ntext 和 image 數(shù)據(jù)。UPDATETEXT 更靈活,因為它僅更改 text、ntext 或 image 列的某一部分,而不是整個列。
如果數(shù)據(jù)庫恢復模型簡單或有大容量日志記錄,則 WRITETEXT 是無日志記錄的操作。這就意味著在將 text、ntext 或 image 數(shù)據(jù)寫入數(shù)據(jù)庫時,不會進行日志記錄;因此,事務(wù)日志不會填滿大量通常由這些數(shù)據(jù)類型組成的數(shù)據(jù)。
為使 WRITETEXT 正常工作,列必須已經(jīng)包含有效的文本指針。
如果該表沒有行內(nèi)文本,則在通過 INSERT 向 text 列中放入顯式或隱式空值時,SQL Server 不初始化 text 列,從而節(jié)省了空間,而且不能獲取這類空值的文本指針。若要將 text 列初始化為 NULL,請使用 UPDATE 語句。如果該表有行內(nèi)文本,就沒有必要為空值初始化文本列,而且您始終可以獲取文本指針。
與 WRITETEXT 相比,DB-Library dbwritetext 和 dbmoretext 函數(shù)以及 ODBC SQLPutData 函數(shù)速度較快且使用的動態(tài)內(nèi)存較少。這些函數(shù)可以插入多達 2G 字節(jié)的 text、ntext 或 image 數(shù)據(jù)。
在 SQL Server 2000 中,可能存在指向 text、ntext 或 image 數(shù)據(jù)的行內(nèi)文本指針,但這些指針無效。有關(guān) text in row 選項的信息,請參見 sp_tableoption。有關(guān)使文本指針無效的信息,請參見 sp_invalidate_textptr。
WRITETEXT 的權(quán)限默認地授予那些對指定的表擁有 SELECT 權(quán)限的用戶。這些權(quán)限可在傳遞 SELECT 權(quán)限時傳遞。
下例將文本指針放到局部變量 @ptrval 中,然后 WRITETEXT 將新的文本字符串放到 @ptrval 所指向的行中。
USE pubs
GO
EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'true'
GO
DECLARE @ptrval binary(16)
SELECT @ptrval = TEXTPTR(pr_info)
FROM pub_info pr, publishers p
WHERE p.pub_id = pr.pub_id
AND p.pub_name = 'New Moon Books'
WRITETEXT pub_info.pr_info @ptrval 'New Moon Books (NMB) has just released another top ten publication. With the latest publication this makes NMB the hottest new publisher of the year!'
GO
EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'false'
GO
相關(guān)文章