提问人:Yanki141 提问时间:9/23/2022 最后编辑:marc_sYanki141 更新时间:9/23/2022 访问量:460
Snowflake:如果在主过程中调用存储过程不存在或不可调用,如何在存储过程中抛出异常?
Snowflake: how to throw an exception in a stored procedure if it is called inside the main procedure doesn't exist or not callable?
问:
我有一个过程 P1,它调用过程 P2。当 P2 不存在时,我需要处理异常。
目前它正在投掷
第 3 行位置 4 上未捕获的类型为“STATEMENT_ERROR”的异常:SQL 编译错误:未知的用户定义函数 P2”
有什么方法可以以不同的方式处理此异常?
P1()
BEGIN
call P2();
END;
答:
1赞
Gokhan Atil
9/23/2022
#1
您可以尝试这样的东西来处理异常吗?
create or replace procedure test_procedure()
returns VARCHAR
language sql
AS
declare
msg VARCHAR DEFAULT '';
begin
begin
CALL P2();
exception
when other then
msg := msg || ' P2 does not exist but it is OK...';
end;
begin
CALL P3();
exception
when other then
msg := msg || ' P3 does not exist but it is OK';
end;
return msg;
end;
CALL test_procedure();
评论
1赞
Yanki141
9/23/2022
实际上,我在主过程(P2)中调用了多个过程(如P3,P3,P1)。我认为上述选项在这种情况下不起作用。
0赞
Gokhan Atil
9/23/2022
@Yanki141实际上这个可以处理所有异常,所以它应该可以工作。不要关注错误消息。如果要继续运行进程,可以使用多个开始结束。更新了示例
0赞
Yanki141
9/26/2022
如果缺少任何过程,我需要引发运行时异常。当不存在任何调用过程时,不应推进主过程。
0赞
Gokhan Atil
9/27/2022
@Yanki141 示例代码已引发异常。是否需要引发自定义异常?
评论