gpt4 book ai didi

exception - 无法从 PL/SQL 中的过程检索错误

转载 作者:行者123 更新时间:2023-12-02 22:17:22 25 4
gpt4 key购买 nike

我开始使用 PL/SQL 并学习如何编写 过程exceptions 但我似乎无法掌握如何显示错误。这个过程很简单,它只应该做简单的数学运算,如下所示:

create or replace
procedure get_simple_math
(n_num1 in number,
n_num2 in number,
n_answer out number,
n_err_code out number,
n_err_msg out varchar2)
as
begin
n_answer := (n_num1 / n_num2);
dbms_output.put_line('Answer is '||n_answer);

n_err_code := 0;
exception
when others
then
n_err_code := SQLCODE;
n_err_msg := 'Error in get_simple_math '||SQLERRM;
raise_application_error (-20002,n_err_msg);
end get_simple_math;

如您所见,它没什么特别的,但我终究无法让 block 运行:

set serveroutput on
declare
n_answer number := 0;
n_err_code number;
n_err_msg varchar2;
begin
get_simple_math(10,5,n_answer);
end;

我假设我需要声明设置为 out 的变量,这就是它们在那里的原因。我还尝试将它们添加到 procedure 中,执行方式如下:

get_simple_math(10,5,n_answer,n_err_code,n_err_msg);

但这似乎并没有解决问题,所以我只是在寻求一些帮助来解决这个问题。提前致谢。

最佳答案

运行这个,你会得到你的答案:

declare
n_answer number := 0;
n_err_code number;
--> n_err_msg varchar2; -- Incorrect
n_err_msg varchar2(300); -- Correct
begin
--> get_simple_math(10,5,n_answer); -- Incorrect call to proc...
get_simple_math(10,5,n_answer, n_err_code, n_err_msg); -- add out parameters
end;
/

程序部分的一般建议:使用 substr - 可选:

  n_err_msg := 'Error in get_simple_math '||substr(SQLERRM, 1, 250);

关于exception - 无法从 PL/SQL 中的过程检索错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14244789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com