oracle+6550存储过程,Oracle 存储过程调试出错:ORA-06550,该如何解决

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

红色跟蓝色之前有空格

------解决方案--------------------

引用:老大,是有空格,我是作为别名来用的。

114702583.gif

我好菜啊~~

------解决方案--------------------

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

end CP_UPDATE_DTL_YHJ_SUM;

改为end;

------解决方案--------------------

直接复制你的过程结构然后替换了一下我的表名,完全木有问题额!

------解决方案--------------------

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

end CP_UPDATE_DTL_YHJ_SUM;

改为end;

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

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

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值