这行到:UPDATE DINV_DTL_YHJ D_D_Y SET D_D_Y.REDEEMWAY  =  (RUR1.SUM_REDEEMVALUES/INT_COUNT_DINV_COUPON_BY_INV);这里出错。

解决方案 »

  1.   

    语法没找到错,不知道是不是你的数据有问题,D_D_Y.REDEEMWAY  这个字段和要更改的值匹配吗(类型)?
      

  2.   

    1、这就是整个存储过程。
    2、
    UPDATE DINV_DTL_YHJ D_D_Y SET D_D_Y.REDEEMWAY  =  (RUR1.SUM_REDEEMVALUES/INT_COUNT_DINV_COUPON_BY_INV);这句如果改成:
            UPDATE DINV_DTL_YHJ D_D_Y
               SET D_D_Y.REDEEMWAY =66;
    仍然报上面的错误。
    看来是结构的问题?
      

  3.   

    UPDATE DINV_DTL_YHJ D_D_Y SET D_D_Y.REDEEMWAY
    红色跟蓝色之前有空格
      

  4.   

    我单独执行:
            UPDATE DINV_DTL_YHJ D_D_Y
               SET D_D_Y.REDEEMWAY =66;
    是没有问题的,执行返回1000多行。
      

  5.   


    end CP_UPDATE_DTL_YHJ_SUM;
    改为end;
      

  6.   


    end CP_UPDATE_DTL_YHJ_SUM;
    改为end;我按照你说的方法,故障依旧。
      

  7.   


    end CP_UPDATE_DTL_YHJ_SUM;
    改为end;我按照你说的方法,故障依旧。
    把UPDATE 拿到外面单独执行,将拿出了UPDATE的procedure也单独执行,如果两者都正常,就实在没办法了
      

  8.   

    问题解决了:
    我的那个UPDATE 语句没有where条件,导致程序长时间执行,不知死活。
    当然把上一个逗号去掉。
    WHERE TRIM(DDY.INV_NUM) = TRIM(RUR1.INV_NUM);顺便说一下用:
    调试存储过程还是要在SQLGate或PLSQL里的PLSQL模块里面,其他模块误导,以为编译没问题,其实根本没编译成功。还是要多试试。