雪花:从另一个过程调用的带有 ARRAY 参数的过程
Posted
技术标签:
【中文标题】雪花:从另一个过程调用的带有 ARRAY 参数的过程【英文标题】:Snowflake: Procedure with ARRAY parameter called from another procedure 【发布时间】:2021-10-31 04:51:06 【问题描述】:我想将数组绑定到过程中的调用。
我收到以下错误消息:
存储过程 TEST_CALL_DO_WITH_ARR 中的执行错误:无效的绑定参数Gabi、Klaus、Sabine。 错误:绑定参数 2undefined 的类型不受支持在 Snowflake.execute,第 2 行位置 25
CREATE OR REPLACE PROCEDURE Test_DO_WITH_ARR(ARR ARRAY )
RETURNS VARIANT
LANGUAGE javascript
EXECUTE AS CALLER
AS
$$
// Do something with the Array
return 'OK' ;
$$
;
CREATE OR REPLACE PROCEDURE Test_CALL_DO_WITH_ARR()
RETURNS VARIANT
LANGUAGE JAVASCRIPT
EXECUTE AS CALLER
AS
$$
var Param_ARRAY = ['Gabi','Klaus','Sabine'] ;
var stmt = snowflake.execute( sqlText: "CALL Test_DO_WITH_ARR(:1)", binds: [Param_ARRAY] );
return stmt ;
$$
;
CALL Test_CALL_DO_WITH_ARR() ;
【问题讨论】:
【参考方案1】:目前,JS 中的雪花存储过程仅支持 number、string 和 SfDate 作为绑定变量,如我们的文档中所述:
https://docs.snowflake.com/en/sql-reference/stored-procedures-usage.html#binding-variables
目前,只有数字、字符串和类型的 JavaScript 变量 SfDate 可以绑定。
解决方法是作为字符串传递,并在内部函数调用中使用 JS 将它们转换为数组。
【讨论】:
以上是关于雪花:从另一个过程调用的带有 ARRAY 参数的过程的主要内容,如果未能解决你的问题,请参考以下文章