Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Snowflake cloud data platform 雪花Javascript SP输出为表?_Snowflake Cloud Data Platform - Fatal编程技术网

Snowflake cloud data platform 雪花Javascript 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

我正在编写一个SP,其中输出预期为表。但无法以表格式获取输出,而是将其作为对象接收,在使用数组作为返回类型时,将其作为一个值或一列中的所有行

'''


从月销售额中选择*; 创建或替换过程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});
        }
   }
}
$$;