Snowflake 存储过程多语句列表参数

Snowflake Stored Procedure multiple statements list parameters

我想创建一个包含多个 SQL 语句的 Snowflake 存储过程,并输入多个恰好是列表的参数。遇到麻烦。可能吗?

我的尝试:

CREATE OR REPLACE PROCEDURE SP_MULTI_STATEMENT(NAME string , AGE string)
returns string not null
language javascript
as
$$
var cmd = `
update TABLE_1 set SOMETHING1 = 'OK' where NAME in (${NAME});
update TABLE_2 set SOMETHING2 = 'GREAT' where AGE in (${AGE});
    `
    var sql = snowflake.createStatement({sqlText: cmd});
    var result = sql.execute();
    return 'DONE';
    $$;

当我打电话给我的 SP 时,我希望它是:

call SP_MULTI_STATEMENT('Andy, Brian, Christa','21,23,24');

大部分看起来不错,但您需要在名称列表中添加更多带引号的转义字符。

这个例子有效:

CREATE OR REPLACE PROCEDURE SP_MULTI_STATEMENT(NAMES string , AGES string)
returns string not null
language javascript
as
$$
var cmd = `
select *
from (select 'a' name, 33 age)
where NAME in (${NAMES})
and AGE in (${AGES});
    `
    var sql = snowflake.createStatement({sqlText: cmd});
    var result = sql.execute();
    if(result.next()) {
        return result.NAME;
    }
    return 'no results'
    $$;
    
call SP_MULTI_STATEMENT('\'a\', \'b\', \'c\'', '30, 31, 32, 33');