WRITETEXT
允许对现有的 text、ntext 或 image 列进行无日志记录的交互式更新。该语句将彻底重写受其影响的列中的任何现有数据。WRITETEXT 语句不能用在视图中的 text、ntext 和 image 列上。
UPDATETEXT
更新现有 text、ntext 或 image 字段。使用 UPDATETEXT 在适当的位置更改 text、ntext 或 image 列的一部分。使用 WRITETEXT 来更新和替换整个 text、ntext 或 image 字段。
示例
本示例把文本指针置于局部变量 @ptrval 中,然后使用 UPDATETEXT 更新拼写错误。
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@#
UPDATETEXT pub_info.pr_info @ptrval 88 1 @#b@#
GO
EXEC sp_dboption @#pubs@#, @#select into/bulkcopy@#, @#false@#
GO
返回特定文本数据
下例在 pubs 数据库的 pub_info 表中查找与 pub_id 0736 相关联的 text 列 (pr_info)。下例首先声明一个局部变量 @val。然后将文本指针(长二进制字符串)置于 @val 中,并将其作为参数提供给 READTEXT 语句,该语句将返回从第五个字节(偏移量为 4)开始的 10 个字节。
USE pubs
GO
DECLARE @val varbinary(16)
SELECT @val = TEXTPTR(pr_info)
FROM pub_info
WHERE pub_id = @#0736@#
READTEXT pub_info.pr_info @val 4 10
GO
lb_auto = gnv_app.inv_sec.autocommit
gnv_app.inv_sec.autocommit = true
If not fileexists(as_file) Then RETURN FAILURE
ll_filenum = fileopen(as_file, StreamMode!, Read!, Shared!)
ll_len = fileread(ll_filenum, lblb_c)
do while ll_len > 0
lblb_total = lblb_total + lblb_c
ll_len = fileread(ll_filenum, lblb_c)
loop
fileclose(ll_filenum)
updateblob app_files set content = :lblb_total where id = :al_id using gnv_app.inv_sec;
ll_ret = gnv_app.inv_sec.SQLNRows
gnv_app.inv_sec.autocommit = lb_auto
If ll_Ret <= 0 Then RETURN FAILURE
RETURN SUCCESS
long ll_max, iIf len(ablb_data) = 0 Then return 0
li_FileNum = FileOpen(as_file, StreamMode!, Write!, LockReadWrite!, Replace!)
ll_max = len(ablb_data)
i = 0
do while ll_max > 0
FileWrite(li_FileNum, blobmid(ablb_data, i * 32765 + 1, 32765))
ll_max = ll_max - 32765
i ++
Loop
fileclose(li_filenum)
RETURN 1