我们如何在Snowflake中执行SnowSQL中的错误处理



我们知道如何在SnowSql中执行错误处理吗?

示例:一个SnowSQL有10个SQL步骤,如果前一步执行成功,则捕获。假设步骤5由于某些问题而失败,那么在输出日志中捕获相同的内容。或者第5步失败了,但忽略该失败并继续执行SnowSql

您可以创建一个存储过程,并在Try/Catch块中运行每个语句。

相关的部分看起来像这样:

stmt = snowflake.createStatement("select 1");
var rs;
try{
rs = stmt.execute();
return stmt.getQueryId() + ":" + "SUCCESS";
}
catch(err){
return GetLastQueryID() + ":" + "ERROR:" + err.message;
}

如果脚本应该在错误时终止,您可以使用错误退出。如果脚本应该继续,您可以报告错误并继续执行。

我实际上写了一个存储过程来做这个。它从Snowflake表中读取SQL语句。有一列设置语句运行的顺序。使用20世纪70年代的技巧,以10或100的增量对步骤进行编号,以便在需要时在中间添加新的步骤。它还允许设置简单的替换变量。

https://github.com/GregPavlik/snowflake_script_runner

最新更新