雪花存储过程异常&&A [英] Snowflake Stored Procedure Exception & Failure
本文介绍了雪花存储过程异常&&A的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
专家,
对雪花中的异常处理有疑问。我知道我们可以使用Try&;Catch挡路来处理错误,并使用Return/Throw错误消息。
- 抛出和返回有什么不同-我都试过了,它的行为是一样的。
- 以上两种情况都发回错误消息。然而,在调用程序中没有失败。我们在Oracle中是否有类似的引发错误。
如果有问题,请让我知道。
推荐答案
- return关键字返回值并退出当前函数。返回值可能是错误消息,但它是作为常规字符串返回的,而不是错误条件。
- Throw关键字引发错误并退出当前函数。如果其上方的执行堆栈中没有捕获到错误,则执行将停止并返回错误。
当您从Snowflake UI运行JavaScript UDF或存储过程时,您可以看出出现了一个未捕获的错误,因为返回结果为红色。如果错误以黑色或蓝色返回,即使错误消息报告错误,它也已被捕获,并且呼叫状态不是错误。这里有个例子:
create or replace procedure FOO()
returns string
language javascript
as
$$
// Run a helper function here
myFunction();
function myFunction(){
var mySqlStatement = "select * from NONEXISTENT_TABLE";
var statement1 = snowflake.createStatement({sqlText: mySqlStatement});
statement1.execute();
}
$$;
call foo(); // This will generate an error and return in red text.
create or replace procedure FOO()
returns string
language javascript
as
$$
try{
myFunction();
}
catch(e){
return e.message;
}
function myFunction(){
var mySqlStatement = "select * from NONEXISTENT_TABLE";
var statement1 = snowflake.createStatement({sqlText: mySqlStatement});
statement1.execute();
}
$$;
call foo();
// This will catch an error and return it in blue text.
//External clients will not report an error, even through the
//SP returns the error message.
这篇关于雪花存储过程异常&&A的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文