【发布时间】:2022-01-05 13:27:48
【问题描述】:
我想记录存储过程中发生的错误:
catch (ERROR) {
snowflake.execute({sqlText: sql_update_log_command, binds: [RUN_ID, PROCESS_ID,'error', 0, ERROR.message] });
return "Failed: " + ERROR.message;
}
sql_update_log_command 执行过程“update_process_log”并绑定这 5 个参数。但是,当错误发生时,应该包含错误消息的列保持为空。 错误是这样的:
“失败:无法识别数值‘$METADATA$FILE_ROW_NUMBER’ 文件 'data/stage/20220104/user_activity/20220104-172435475.csv.gz',第 2 行,字符 1 第 1 行,$METADATA$FILE_ROW_NUMBER 列 如果您想在遇到错误时继续加载,请为 ON_ERROR 选项使用其他值,例如“SKIP_FILE”或“CONTINUE”。有关加载选项的更多信息,请在 SQL 客户端中运行 'info loading_data'。"
过程“update_process_log”签名:
create or replace procedure metadata.update_process_log(
RUN_ID FLOAT,
PROCESS_ID FLOAT,
PROCESS_STATUS VARCHAR,
NUM_OF_RECORDS FLOAT,
ERROR_MSG VARCHAR)
returns string
language javascript
看起来美元符号 $ 有问题吗?怎么处理?
【问题讨论】:
-
如果你使用会发生什么:
snowflake.execute({sqlText: 'call metadata.update_process_log(:1, :2, :3, :4, :5)', binds: [RUN_ID, PROCESS_ID,'error', 0, ERROR.message] });
标签: javascript stored-procedures snowflake-cloud-data-platform