欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

oracle 存储过程调试出错:ora-06550,该如何处理

更新时间: 2014-01-05 02:13:52 责任编辑: Author_N1

 

Oracle 存储过程调试出错:ORA-06550
Oracle 存储过程调试:
ORA-06550
PLS-00103:出现符号"END"在需要下列之一时:
:=.(@;
符号":"被替换为"END"后继续。


CREATE OR REPLACE procedure BEFOR_VIP_RESET.CP_UPDATE_DTL_YHJ_SUM
is
cursor cur IS  SELECT TRIM(DC.INV_NUM) INV_NUM ,SUM(DC.REDEEMVALUE)  SUM_REDEEMVALUES FROM DINV_COUPON DC GROUP BY DC.INV_NUM;
INT_COUNT_DINV_COUPON_BY_INV number;
begin
    for RUR1 in cur LOOP
BEGIN
    SELECT COUNT(*) INTO INT_COUNT_DINV_COUPON_BY_INV FROM DINV_DTL_YHJ DDY WHERE TRIM(DDY.INV_NUM) =TRIM(RUR1.INV_NUM);
IF (INT_COUNT_DINV_COUPON_BY_INV !=0) THEN
    UPDATE DINV_DTL_YHJ D_D_Y SET D_D_Y.REDEEMWAY  =  (RUR1.SUM_REDEEMVALUES/INT_COUNT_DINV_COUPON_BY_INV);
ORA-06550
PLS-00103:出现符号"END"在需要下列之一时:
:=.(@;
符号":"被替换为"END"后继续。
    END IF ;
    END;
    END LOOP;
end CP_UPDATE_DTL_YHJ_SUM;


debug时发现INT_COUNT_DINV_COUPON_BY_INV、RUR1.INV_NUM 均有正常值
--参考方法--
引用:
这行到:

UPDATE DINV_DTL_YHJ D_D_Y SET D_D_Y.REDEEMWAY  =  (RUR1.SUM_REDEEMVALUES/INT_COUNT_DINV_COUPON_BY_INV);

这里出错。

语法没找到错,不知道是不是你的数据有问题,D_D_Y.REDEEMWAY  这个字段和要更改的值匹配吗(类型)?
--参考方法--
引用:
Oracle 存储过程调试:
ORA-06550
PLS-00103:出现符号"END"在需要下列之一时:
:=.(@;
符号":"被替换为"END"后继续。


CREATE OR REPLACE procedure BEFOR_VIP_RESET.CP_UPDATE_DTL_YHJ_SUM
is
cursor cur IS  SELECT TRIM(DC.INV_NUM) INV_NUM ,SUM(DC.REDEEMVALUE)  SUM_REDEEMVALUES FROM DINV_COUPON DC GROUP BY DC.INV_NUM;
INT_COUNT_DINV_COUPON_BY_INV number;
begin
    for RUR1 in cur LOOP
BEGIN
    SELECT COUNT(*) INTO INT_COUNT_DINV_COUPON_BY_INV FROM DINV_DTL_YHJ DDY WHERE TRIM(DDY.INV_NUM) =TRIM(RUR1.INV_NUM);
IF (INT_COUNT_DINV_COUPON_BY_INV !=0) THEN
    UPDATE DINV_DTL_YHJ D_D_Y SET D_D_Y.REDEEMWAY  =  (RUR1.SUM_REDEEMVALUES/INT_COUNT_DINV_COUPON_BY_INV);
ORA-06550
PLS-00103:出现符号"END"在需要下列之一时:
:=.(@;
符号":"被替换为"END"后继续。
    END IF ;
    END;
    END LOOP;
end CP_UPDATE_DTL_YHJ_SUM;


debug时发现INT_COUNT_DINV_COUPON_BY_INV、RUR1.INV_NUM 均有正常值

把你整个过程贴上来看看
--参考方法--
UPDATE DINV_DTL_YHJ D_D_Y SET D_D_Y.REDEEMWAY
红色跟蓝色之前有空格
--参考方法--
引用:
老大,是有空格,我是作为别名来用的。


我好菜啊~~
--参考方法--
引用:
老大,谦虚了,老大是严谨的。值得我辈学习。


end CP_UPDATE_DTL_YHJ_SUM;
改为end;
--参考方法--
直接复制你的过程结构然后替换了一下我的表名,完全木有问题额!
--参考方法--
引用:
Quote: 引用:

Quote: 引用:

老大,谦虚了,老大是严谨的。值得我辈学习。


end CP_UPDATE_DTL_YHJ_SUM;
改为end;


我按照你说的方法,故障依旧。

把UPDATE 拿到外面单独执行,将拿出了UPDATE的procedure也单独执行,如果两者都正常,就实在没办法了
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:13:52
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7236/
本文WWW.DOC100.NET DOC100.NET版权所有。