雪花程序没有被 catch 块捕获

时间:2021-07-29 08:15:38

标签: javascript sql snowflake-cloud-data-platform

为什么我在 javascript 中的雪花程序会产生错误并且没有被 catch 块捕获?

我有一个像这样创建的非常简单的过程,而不是进入捕获并记录错误,而是返回 JAVASCRIPT UNCAUGHT 异常。

有人可以帮忙吗?代码如下:

CREATE OR REPLACE PROCEDURE TEST()
RETURNS VARCHAR
LANGUAGE JAVASCRIPT
AS
$$
    var CorrectSQL  =` SELECT COL1, COL2 FROm TABLE_1  LIMIT 10`;
    var InCorrectSQL  =` SELE COL1, COL2 FROm TABLE 2  LIMIT 10`; // SYNTAX ERROR SELE 
    var InsertIntoErrorLog =` INSERT INTO ERROR_LOG VALUES ('ERROR')`;
    try
{
    snowflake.execute({sqlText:CorrectSQL}); 
    snowflake.execute({sqlText:InCorrectSQL}); 
}
  catch(err)
{
    snowflake.execute({sqlText: InsertIntoErrorLog});
    return err;
}
$$

1 个答案:

答案 0 :(得分:0)

实际上,它按预期工作。你有“返回错误;”命令在最后,这就是它返回错误消息的原因。试试这个:

CREATE OR REPLACE PROCEDURE TEST()
RETURNS VARCHAR
LANGUAGE JAVASCRIPT
AS
$$
  var CorrectSQL  = `SELECT COL1, COL2 FROm TABLE_1  LIMIT 10`;
  var InCorrectSQL  = `SELE COL1, COL2 FROm TABLE_2  LIMIT 10`;
  var InsertIntoErrorLog =`INSERT INTO ERROR_LOG VALUES ('ERROR')`;
  try {
        snowflake.execute({sqlText:CorrectSQL }); 
       snowflake.execute({sqlText:InCorrectSQL }); 
   } catch (err) {
        snowflake.execute({sqlText: InsertIntoErrorLog});
       // return err;
    }
$$;