【问题标题】:how to get the output of a stored procedure as task output in snowflake如何获取存储过程的输出作为雪花中的任务输出
【发布时间】:2021-10-03 10:48:01
【问题描述】:
【问题讨论】:
标签:
stored-procedures
snowflake-cloud-data-platform
【解决方案2】:
从存储过程中获取返回值以保存到任务历史记录有 2 个部分。
- 存储过程应该“EXECUTE AS CALLER”
- 您需要使用返回值调用 system$set_return_value
例子
CREATE OR REPLACE PROCEDURE MySchema.MyStoredProcedure()
RETURNS VARIANT
LANGUAGE JAVASCRIPT
EXECUTE AS CALLER
AS $$
let command1 = = `DELETE FROM MySchema.MyTable WHERE rownum > 10;`;
let stmt1 = snowflake.createStatement({sqlText: command1});
let rs = stmt1.execute();
rs.next();
let deleted = rs.getColumnValue(1);
//This requires the SP to be run as CALLER - This return value is logged in Task History
stmt1 = snowflake.createStatement({sqlText:`call system$set_return_value(' { "RowsDeleted": ${deleted} }');`});
rs = stmt1.execute();
return { "RowsDeleted": deleted };
$$;