我用下面的方式执行oracle包中的存储过程,存储过程是有错误的但它并不报错,这是问什么?

2025-03-22 22:42:26
推荐回答(2个)
回答1:

存储过程设置返回值,调用完成后检查返回值参数是否符合要求,例如:
修改一下存储过程REWARD_BJCU_INTER.DEAL_REWARD_USER的参数 VAR2是IN OUT的变量(或者增加一个变量也行),存储过程中如果报错了,那么就修改这个值为0,如果成功就就是1,那么调用完成后,检查一下VAR2值就可以了,代码我不写可以么。
这个问题的原因是例外的影响/捕获范围问题。

回答2:

procedure DEAL_REWARD_USER(
p_1 in Varchar2,
p_2 in varchar2,
p_3 in varchar2
x_1 out varchar2) Is

BEGIN
<你的程序>
x_1 := 'Y';--表示执行成功

EXCEPTION
WHEN OTHERS THEN
x_1 := 'N';--表示执行失败

--此处也可以直接raise exception;程序就会终止了
END;

这样在你用命令在后台跑的时候就可以得到x_1,通过判断x_1的值,就知道程序的运行情况。

如果还有不明白,可以继续追问。