USE dbname
SET TEXTSIZE 2048
GO
DECLARE @ptrval1 varbinary(16),@ptrval2 varbinary(16)
declare @i bigint,@j bigint,@k bigint
set @i=1
SELECT @ptrval1 = TEXTPTR(f1) 
   FROM ta where (condition1)
SELECT @ptrval2 = TEXTPTR(f2) 
   FROM tb where (condition2)
updatetext tb.f2 @ptrval2 1 2048  READTEXT ta.pr_info @ptrval1 1 2048
while @@error=0
begin
select @j=@i*2048+1,@k=(@i+1)*2048
updatetext tb.f2 @ptrval2 @j @k  READTEXT ta.pr_info @ptrval1 @j @k
set @i=@i+1
end
GO

解决方案 »

  1.   

    USE dbname
    SET TEXTSIZE 2048
    GO
    DECLARE @ptrval1 varbinary(16),@ptrval2 varbinary(16)
    declare @i bigint,@j bigint,@k bigint
    set @i=1
    SELECT @ptrval1 = TEXTPTR(f1) 
       FROM ta where (condition1)
    SELECT @ptrval2 = TEXTPTR(f2) 
       FROM tb where (condition2)
    updatetext tb.f2 @ptrval2 1 2048  READTEXT ta.pr_info @ptrval1 1 2048
    while @@rowcount>0
    begin
    set @i=@i+1
    select @j=(@i-1)*2048+1,@k=@i*2048
    updatetext tb.f2 @ptrval2 @j @k  READTEXT ta.pr_info @ptrval1 @j @k
    end
    GO
      

  2.   

    服务器: 消息 7133,级别 16,状态 2,过程 CreateFile,行 174
    向 UpdateText 函数传递了 NULL textptr(text、ntext 或 image 指针)。
    服务器: 消息 7124,级别 16,状态 1,过程 CreateFile,行 174
    READTEXT 语句中指定的偏移量和长度大于实际的数据长度 404。
      

  3.   

    楼上执行错误
    服务器: 消息 7133,级别 16,状态 2,过程 CreateFile,行 174
    向 UpdateText 函数传递了 NULL textptr(text、ntext 或 image 指针)。
    服务器: 消息 7124,级别 16,状态 1,过程 CreateFile,行 174
    READTEXT 语句中指定的偏移量和长度大于实际的数据长度 404。
      

  4.   

    原字段(大文本)可能为空
    为什么我用
    updatetext tb.f2 @ptrval2 null null ta.pr_info @ptrval1 
    还是报
    向 UpdateText 函数传递了 NULL textptr(text、ntext 或 image 指针)。
    高手请帮忙