Snowflake存储过程如何从snowflake.execute方法返回执行的SQL查询语句
问题原因
snowflake.execute返回的是ResultSet对象,直接返回该对象时Snowflake存储过程默认只会输出[object object]占位符,无法直接序列化输出对象内部的SQL文本信息。
调整方案
你可以提前将拼接完成的SQL文本单独定义为变量,执行查询时传入该变量,最终直接返回这个字符串变量即可得到实际执行的SQL语句。
示例代码(仅返回执行的SQL)
var sql_text = ` CREATE OR REPLACE VIEW DATABASE.SCHEMA.VIEW_NAME_HERE AS SELECT column1 ,${stuff} as column2 ,${morestuff} as column3 FROM DATABASE.SCHEMA.TABLE_SOURCE_HERE ` // 执行SQL var rs = snowflake.execute( { sqlText: sql_text } ); // 返回拼接完成的SQL字符串 return sql_text;
示例代码(同时返回执行状态和SQL)
如果需要同时确认视图创建结果,可以组合返回执行状态和SQL:
var sql_text = ` CREATE OR REPLACE VIEW DATABASE.SCHEMA.VIEW_NAME_HERE AS SELECT column1 ,${stuff} as column2 ,${morestuff} as column3 FROM DATABASE.SCHEMA.TABLE_SOURCE_HERE ` var rs = snowflake.execute( { sqlText: sql_text } ); var execution_status = rs.next() ? rs.getColumnValue(1) : '执行完成无状态返回'; // 转成JSON字符串返回结构化结果 return JSON.stringify({ execution_status: execution_status, executed_sql: sql_text });
补充说明
如果需要获取Snowflake引擎实际接收到的最终执行SQL(避免自定义拼接遗漏特殊转义场景),可以在执行完语句后查询QUERY_HISTORY视图拉取当前会话最新执行的SQL记录,常规场景下提前存储拼接的SQL变量即可满足需求。
内容的提问来源于stack exchange,提问作者mikelowry
相关产品推荐
相关产品推荐

