【发布时间】:2016-05-22 06:22:29
【问题描述】:
所以我在下面有一个接受日期作为 IN 参数的程序。如果传入了错误类型的参数,异常区域将无法捕捉到它,因为该参数是在 CURSOR 声明部分使用的。
PROCEDURE ABC(p_date IN DATE)
IS
CURSTOR cur
IS
SELECT *
FROM table
WHERE table.date = TRUNC(p_date);
BEGIN
do something;
EXCEPTION
WHEN OTHERS THEN
do something;
END;
如果用户传递了错误的参数类型:
BEGIN
ABC(123);
END;
我会收到“调用 'ABC' 时参数的数量或类型错误”错误。
在这种情况下有没有办法处理这个错误?
【问题讨论】:
-
错误不是出现在游标中,而是在调用过程时出现。您的 proc 接受 DATE,但您将 NUMBER 传递给它。转换编号->日期失败 - 因此出现错误
-
谢谢。是不是说传入了错误的参数,就没有办法处理异常了?
-
它没有。你总是可以处理调用过程的异常。
标签: plsql