0

我想将数组绑定到过程中的调用。

我收到以下错误消息:

存储过程 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() ;
4

1 回答 1

1

目前,JS 中的雪花存储过程仅支持数字、字符串SfDate作为绑定变量,如我们的文档中所述:

https://docs.snowflake.com/en/sql-reference/stored-procedures-usage.html#binding-variables

目前,只能绑定 number、string 和 SfDate 类型的 JavaScript 变量。

解决方法是作为字符串传递,并在内部函数调用中使用 JS 将它们转换为数组。

于 2021-09-07T22:56:32.347 回答