日期:2014-05-17  浏览次数:21183 次

过程中用游标处理DBLINK中的问题
过程如下:
CREATE OR REPLACE PROCEDURE YST.DB_SHCL_PRE
IS
d1 date;d2 date;
s2 varchar2(20);s3 varchar2(20);s4 varchar2(20);s5 varchar2(20);
v1 number;v2 number;v3 number;v4 number;v5 number;
cursor c1 is select JZDETAILID,fhdh,ljx,zz-pz-kz,credate,inputman from yst_jzdetail where fhdh is not null and substr(fhdh,1,1) <> 'S' and trunc(credate)= trunc(sysdate)-0 and initflag= 1;
BEGIN
  open c1;
  loop
fetch c1 into v1,s5,s3,v2,d1,s4;
if c1%notfound then
exit;
end if;
--发货方
  update yst_jzdetail@sfhorcl set fhdh = 'S'||s3,fhsl = v2,fhsj = d1,s1 = s4 where ljx = s5;
  end loop;
  close c1;
  commit;
END;
/
问题:
游标已经取出数据了,s5='649159','649163'.....
为什么执行无结果,根本没有更新。而在sqlplusw中单独执行
update yst_jzdetail@sfhorcl set fhdh = 'S'||s3,fhsl = v2,fhsj = d1,s1 = s4 where ljx = '649159';
commit;
却执行成功了。
如果把过程中的update换成update yst_jzdetail@sfhorcl set fhdh = 'S'||s3,fhsl = v2,fhsj = d1,s1 = s4 where ljx = '649159';
执行结果中s3,s4并没有更新,是不是字符类型有什么问题呢?



------解决方案--------------------
fhdh = 'S'||s3,fhsl = v2,fhsj = d1,s1 = s4 
你是说 update后fhsl得到了你要的结果fhdh、s1和这个没有得到你要的结果?
那他们更新后是什么内容?