【发布时间】:2021-08-16 19:51:12
【问题描述】:
我有下面的 Snowflake Javascript 存储过程,我需要在 sql 语句中替换字符串的多个实例。
CREATE OR REPLACE PROCEDURE MYSCHEMA.CountryDelete(COUNTRY VARCHAR)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
var error_msg = 'Success';
try
{
var sql_cmd_temp = `DELETE FROM MYSCHEMA.CountryTable_{country}
WHERE COUNTRY_CODE = '{country}';`
var sql_cmd = sql_cmd_temp.replace("{country}", COUNTRY);
return sql_cmd;
}
catch(err)
{
error_msg += "ERROR : " + err.message;
}
return sql_cmd;
$$;
当我执行上述存储过程时,得到以下输出。在这里,{country} 的第一个实例将替换为 CH(其中 CH 是我在执行此存储过程时发送的参数值),但不是第二个。
DELETE FROM ODP_SUBNATIONAL_STAGING.IDP_SUBNATIONAL_SALES_CH
WHERE COUNTRY_CODE = '{country}';
我期待下面的输出。
DELETE FROM ODP_SUBNATIONAL_STAGING.IDP_SUBNATIONAL_SALES_CH
WHERE COUNTRY_CODE = 'CH';
我还尝试了 Javascript 的 replaceAll 而不是 replace,但它返回了 [NULL]。
请注意,由于我必须在多行中对 sql 进行硬编码,因此在将 sql 字符串存储到变量中时,我需要使用 Grave 重音符号。否则我会使用 " 符号来存储 sql 并使用 + 符号使其动态化。
如果有人能帮助解决这个问题,我们将非常感激。
【问题讨论】:
标签: javascript stored-procedures replace snowflake-cloud-data-platform java-stored-procedures