雪花存储过程多语句列表参数
Posted
技术标签:
【中文标题】雪花存储过程多语句列表参数【英文标题】:Snowflake Stored Procedure multiple statements list parameters 【发布时间】:2021-03-13 01:26:23 【问题描述】:我想创建一个包含多个 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');
【问题讨论】:
你遇到了什么样的“有问题”?有任何错误信息吗? 【参考方案1】:大部分看起来不错,但您需要在名称列表中添加更多引用的转义符。
这个例子有效:
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');
【讨论】:
以上是关于雪花存储过程多语句列表参数的主要内容,如果未能解决你的问题,请参考以下文章