为什么我在 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;
}
$$
答案 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;
}
$$;