存储过程,游标,好奇怪的问题,希望大家帮帮忙!
我现在有个存储过程,主要是把明细表数据汇总插入到汇总表。
1.我定义了个视图,把明细表的数据做汇总,这个视图的sql很复杂的。
2.我在存储过程中定义了游标,从视图中取出所有数据。
3.然后遍历游标,插入到目标表中。
现在有个很奇怪的问题:
1.我把视图中的所有字段都取出来放在游标中,存储过程运行的时候有很多数据插不进去,或者报“分布式协议错误”。
2.如果我只从视图中取出第一个字段,然后遍历,插入都没问题。
关键代码如下:
DECLARE cursor1 CURSOR for select ibankid,c1,s1,c2,s2 from inidraw;--申明游标
open cursor1;
set l_sqlerror=0;
fetch from cursor1 into v_bankid;
label:--遍历数据开始
while l_sqlerror=0 do
Insert into INDIVIDUALDRAWMONTH(IYEAR, IMONTH, IBANKID, VCHACCOUNTNAME, CHIDTYPE, VCHIDNUMBER, IACCOUNTNUM, ICASHDRAWALLNUM, NCASHDRAWALLSUM,ICASHDRAWCOUNTERNUM, NCASHDRAWCOUNTERSUM, ICASHDRAWATMNUM, NCASHDRAWATMSUM, VCHBANKSHORTNAME, DTINSERTDATE, CHINSERTBY)
values(‘2009‘,’11‘,v_bankid,'1','1','1',1,1,1,1,1,1,1,'1',current timestamp,'1');
fetch from cursor1 into v_bankid;
end while label;
我只要把红色部分加上,就会出现插入不完全的情况,或者报“分布式协议错误”的问题。
请大家帮我分析分析。谢谢了