【发布时间】:2015-09-18 11:04:22
【问题描述】:
我编写了一个简短的程序,当输入捐助者 ID 时,它会根据状态字段检查活动承诺(数据类型 10 的 NUMBER 是活动的,20 是完整的)并且每月付款并返回布尔值 True 如果全部条件满足,如果不满足,则为 False。在添加 DBMS 输出之前,它可以正常编译,但出现错误 PLS-00306:wrong number or types of arguments in call"
自己解决这个问题感觉很好,但不确定我的错误在哪里。还在寻找关于异常处理程序的解释(在代码中注释)。提前感谢cmets和教学点!
我的代码:
CREATE OR REPLACE PROCEDURE DDPAY_SP
(donor_id IN NUMBER, active_pl OUT BOOLEAN)
IS
pay_count NUMBER;
BEGIN
SELECT COUNT(*)
INTO pay_count
FROM dd_pledge
WHERE iddonor = donor_id AND
idstatus = 10 AND
paymonths > 1;
IF pay_count > 1 THEN
active_pl := TRUE;
ELSE active_pl := FALSE;
END IF;
DBMS_OUTPUT.PUT_LINE('Active Pledge and paymonths: ' || active_pl);
/* want to add exception but don't understand how to choose
the handler for blocks of code that are not the Oracle defined
exceptions--Can someone explain better than book I have? I know
code should be:
EXCEPTION
WHEN .....
DBMS_OUTPUT.PUT_LINE(' '); */
END;
【问题讨论】:
-
您不需要调用 DBMS_OUTPUT。你有一个布尔输出参数。此外,您不能将布尔值传递给 DBMS_OUTPUT。执行程序时会发生什么?
标签: oracle plsql oracle11g boolean dbms-output