pl / sql更新过程不能通过参数

时间:2012-09-20 04:48:20

标签: plsql

这是程序:

create or replace procedure CHECK_INFO_ACTUAL_AMOUNT_UPD(
ACTUAL_AMOUNT IN CHECK_INFO.ACTUAL_AMOUNT%TYPE,
CHECK_INFO_ID IN CHECK_INFO.ID_CHECK_INFO%TYPE,
TOTAL_ADJUSTMENT IN CHECK_INFO.TOTAL_ADJUSTMENT_ACCRUEMENT%TYPE
) 
is
begin
  UPDATE CHECK_INFO C SET C.ACTUAL_AMOUNT = ACTUAL_AMOUNT,
  C.IS_ACCUMULATION_COMPLITED = 5,
  C.TOTAL_ADJUSTMENT_ACCRUEMENT = TOTAL_ADJUSTMENT 
  WHERE C.ID_CHECK_INFO = CHECK_INFO_ID;
  COMMIT;
    EXCEPTION
    WHEN OTHERS
    THEN
      DBMS_OUTPUT.PUT_LINE(SQLERRM);
      ROLLBACK;
end CHECK_INFO_ACTUAL_AMOUNT_UPD;

问题是当我通过传递参数执行它时,过程不会更新ACTUAL_AMOUNT字段,但是当我在程序内部分配值时它会更新,如

...
UPDATE CHECK_INFO C SET C.ACTUAL_AMOUNT = 111,
...

我试过调试值传给参数... Whan是问题???

1 个答案:

答案 0 :(得分:1)

它不起作用,因为你使用相同的参数名称(ACTUAL_AMOUNT,ID_CHECK_INFO)。
为了避免混淆,你应该使用某种约定来命名过程参数,我使用{{ 1}}作为初始。

试试这个:

p_