Snowflake cloud data platform 雪花Javascript SP输出为表?
我正在编写一个SP,其中输出预期为表。但无法以表格式获取输出,而是将其作为对象接收,在使用数组作为返回类型时,将其作为一个值或一列中的所有行 '''Snowflake cloud data platform 雪花Javascript SP输出为表?,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我正在编写一个SP,其中输出预期为表。但无法以表格式获取输出,而是将其作为对象接收,在使用数组作为返回类型时,将其作为一个值或一列中的所有行 ''' 从月销售额中选择*; 创建或替换过程getRowCount(TABLENAME VARCHAR(1000)) 返回变量 非空 语言javascript 作为 $$ //动态组合要执行的SQL语句 var sql_command = " SELECT * FROM "+TABLENAME+";" // Prepare statement. var
从月销售额中选择*; 创建或替换过程getRowCount(TABLENAME VARCHAR(1000)) 返回变量 非空 语言javascript 作为 $$ //动态组合要执行的SQL语句
var sql_command = " SELECT * FROM "+TABLENAME+";"
// Prepare statement.
var stmt = snowflake.createStatement({sqlText: sql_command});
//执行语句
尝试
{
var rs=stmt.execute()
}catch(err){return“error”+err;}
$$;
调用getRowCount(“每月销售”)
'''
预期产出:
雪花存储过程不能具有表的输出类型。你有几个选择。一种选择是编写一个存储过程,返回一个数组或JSON,您可以将其展平到一个表中。但是请注意,不能直接使用存储过程的返回。您必须首先运行存储过程,当会话中执行的下一条语句收集输出时,如下所示:
select * from table(result_scan(last_query_id()));
SELECT * FROM TABLE(COUNT_LOW_HIGH(1::double, 1000::double));
另一个选项是编写用户定义的表函数(UDTF),它是唯一以雪花形式返回表的函数类型。下面是一个简单的UDTF示例:
create or replace function COUNT_LOW_HIGH(LowerBound double, UpperBound double)
returns table (MY_NUMBER double)
LANGUAGE JAVASCRIPT
AS
$$
{
processRow: function get_params(row, rowWriter, context){
for (var i = row.LOWERBOUND; i <= row.UPPERBOUND; i++) {
rowWriter.writeRow({MY_NUMBER: i});
}
}
}
$$;
雪花存储过程不能具有表的输出类型。你有几个选择。一种选择是编写一个存储过程,返回一个数组或JSON,您可以将其展平到一个表中。但是请注意,不能直接使用存储过程的返回。您必须首先运行存储过程,当会话中执行的下一条语句收集输出时,如下所示:
select * from table(result_scan(last_query_id()));
SELECT * FROM TABLE(COUNT_LOW_HIGH(1::double, 1000::double));
另一个选项是编写用户定义的表函数(UDTF),它是唯一以雪花形式返回表的函数类型。下面是一个简单的UDTF示例:
create or replace function COUNT_LOW_HIGH(LowerBound double, UpperBound double)
returns table (MY_NUMBER double)
LANGUAGE JAVASCRIPT
AS
$$
{
processRow: function get_params(row, rowWriter, context){
for (var i = row.LOWERBOUND; i <= row.UPPERBOUND; i++) {
rowWriter.writeRow({MY_NUMBER: i});
}
}
}
$$;