Stored procedures 根据条件为Snowflake SQL分配变量
我正在尝试根据作为存储过程中的参数传递的输入变量执行sql命令。如果传递的参数是INCR,我想将sql的一部分附加到最终的sql查询变量Stored procedures 根据条件为Snowflake SQL分配变量,stored-procedures,snowflake-cloud-data-platform,Stored Procedures,Snowflake Cloud Data Platform,我正在尝试根据作为存储过程中的参数传递的输入变量执行sql命令。如果传递的参数是INCR,我想将sql的一部分附加到最终的sql查询变量 var exec_cmnd = (load_type == 'INCR') ? "AND EXISTS (SELECT 1 FROM tbl T WHERE inner_tbl.id = outer_tbl.id)" : "1 = 1"; var qry = "`select * from tbl_a w
var exec_cmnd = (load_type == 'INCR') ? "AND EXISTS (SELECT 1 FROM tbl T WHERE inner_tbl.id = outer_tbl.id)" : "1 = 1";
var qry = "`select * from tbl_a where name=name and `+exec_cmnd+`";
snowflake.execute({sqlText:qry});
但这种情况似乎带来了一个错误。请告诉我如何根据IF条件将变量分配给sql命令查询变量?如果
load\u type
被传递到存储过程中,则需要在JavaScript主体中使用大写形式
您的连接稍微关闭。我强烈建议在JavaScript存储过程中为SQL使用JavaScript文本模板
用后勾号打开字符串,用后勾号关闭字符串。然后,您可以通过如下方式包装任何JavaScript变量:${myVariable}。它还允许您在SQL中使用单引号、双引号和多行语句,而不会出现问题
create or replace procedure foo(load_type string)
returns string
language javascript
as
$$
var exec_cmnd = (LOAD_TYPE == 'INCR') ? "EXISTS (SELECT 1 FROM tbl T WHERE inner_tbl.id = outer_tbl.id)" : "1 = 1";
var qry = `select * from tbl_a where name=name and ${exec_cmnd}`;
return qry;
$$;
call foo('INCR');
谢谢你,格雷格!这有助于:)