本机是Oracle9,在主表建立了一个触发器,某字段更新就把主表和从表复制到另一台数据库(用的Oracle7),,同时再用gxqc_pmb中的数量更新另一台数据库的qc_pmb表,出错的代码如下:
...
zb_PMNM NUMBER(10);//
...
OPEN CUR_FLCB;
WHILE TRUE LOOP
FETCH CUR_FLCB INTO zb_FLBH, zb_PMNM, zb_FLDJ, zb_SQS, zb_SPS, zb_SFS, zb_BZ;//从表的字段,前面声明的没错
IF CUR_FLCB %NOTFOUND THEN
EXIT;
END IF;
SELECT COUNT(PMNM) INTO P_COUNT FROM QC_PMB@oracle9to71 WHERE PMNM=zb_pmnm;//如果Oracle7里面没有该pmnm就不复制
IF(P_COUNT>0) THEN
INSERT INTO QC_FLCB@oracle9to71(FLBH,PMNM,FLDJ,SQS,SPS,SFS,BZ) VALUES(zb_FLBH, zb_PMNM, zb_FLDJ, zb_SQS, zb_SPS, zb_SFS, zb_BZ);
UPDATE QC_PMB@oracle9to71 set(zlkc,zykc,zzkc,fpkc,zbzzkc,zlkykc,zykykc,zzkykc,zbzzkykc)=(select zlkc,zykc,zzkc,fpkc,zbzzkc,zlkykc,zykykc,zzkykc,zbzzkykc from gxqc_pmb where pmnm=zb_PMNM) where pmnm=zb_PMNM;//就是这里出错,把zb_PMNM改成1100020332等10位数字就没事了,
commit;//
END IF;
END LOOP;
CLOSE CUR_FLCB;
错误信息是:ORA-01008:不是所有的变量都赋了值;
不知道为啥insert语句没事,更新就有问题,请指点。谢谢,在线等
------解决方法--------------------------------------------------------
估计有奇怪字符
先复制到记事本在复制回来试试
------解决方法--------------------------------------------------------
select zlkc,zykc,zzkc,fpkc,zbzzkc,zlkykc,zykykc,zzkykc,zbzzkykc from gxqc_pmb where pmnm=zb_PMNM
查询的结果有且仅有一条么?