Snowflake JavaScript存储过程返回SQL COUNT结果为NULL如何解决
问题原因
- 拿到SQL执行返回的结果集(ResultSet)后,没有调用
next()方法将游标移动到第一行数据的位置,此时直接读取列值自然返回NULL getColumnValue()方法要求必须传入参数:可以是列的序号(从1开始计数),也可以是列的别名/名称,未传参无法定位要读取的列- catch代码块中仅定义了错误信息变量
result,但没有执行return操作,触发异常时过程也会返回NULL - 额外优化点:COUNT返回的是数值类型,你定义的返回类型是varchar虽然可以隐式转换,但建议修改为number类型更匹配
修正后代码
CREATE OR REPLACE PROCEDURE TO_STG() returns number LANGUAGE JAVASCRIPT AS $$ var sql_cmd = 'SELECT COUNT(*) AS CNT FROM AVAILABLE'; var SqlCOUNT = snowflake.createStatement({ sqlText: sql_cmd }); try { var sql_Count = SqlCOUNT.execute(); // 移动游标到结果集第一行 sql_Count.next(); // 传入列别名读取对应值,也可替换为getColumnValue(1)取第一列的值 var Count = sql_Count.getColumnValue('CNT'); return Count; } catch (err) { return "Failed: Code: " + err.code; } $$;
内容的提问来源于stack exchange,提问作者ADom
相关产品推荐
相关产品推荐

