日期:2014-05-02  浏览次数:20506 次


   
WR99vETEXT
允许对现有的 text、ntext 或 image 列进行无日志记录的交互式更新。该语句将彻底重写受其影响的列中的任何现有数据。WR99vETEXT 语句不能用在视图中的 text、ntext 和 image 列上。

UPDATETEXT
更新现有 text、ntext 或 image 字段。使用 UPDATETEXT 在适当的位置更改 text、ntext 或 image 列的一部分。使用 WR99vETEXT 来更新和替换整个 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

// 保存可執行文件到COMMON數據庫
long ll_filenum, ll_len, ll_ret
blob lblb_c, lblb_total
boolean lb_auto

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, i
integer li_FileNum

If 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