CREATE OR REPLACE PROCEDURE "PUBLIC".PHONE_DATA_ROLLUP()
RETURNS VARCHAR
LANGUAGE javascript
AS
$$
var rs = snowflake.execute( { sqlText:
'INSERT INTO PROC_LOG ("PROC_NAME","EXEC_TIME") SELECT ''value 1'' AS "PROC_NAME", CURRENT_TIMESTAMP as "EXEC_TIME";'
});
return 'Done.';
$$;
CALL PHONE_DATA_ROLLUP();
错误:
SQL错误100131: JavaScript编译错误:未指定的SyntaxError: PHONE_DATA_ROLLUP中“插入到PROC_LOG”("PROC_NAME","EXEC_TIME")处的意外字符串,选择‘’值1‘作为"PROC_NAME",选择CURRENT_DATE作为“EXEC_TIME”;’位置62
。
发布于 2019-12-07 17:29:52
我强烈建议在JavaScript过程中对SQL字符串使用反引号,以及变量绑定。
var rs = snowflake.execute( {
sqlText: `INSERT INTO PROC_LOG ("PROC_NAME","EXEC_TIME")
SELECT :1 AS "PROC_NAME", CURRENT_TIMESTAMP as "EXEC_TIME"`,
binds: ["value 1"]
});
主要的优点是:
可以同时使用‘单引号’和“双引号”,无需任何保护,contamination
这两个特性对于SQL代码都非常有用。
发布于 2019-12-07 06:20:32
在像这样的Javascript中,可以用反斜杠(\'
)而不是双引号(''
)来转义单引号。
...
'INSERT INTO PROC_LOG ("PROC_NAME","EXEC_TIME") SELECT \'value 1\' AS "PROC_NAME", CURRENT_TIMESTAMP as "EXEC_TIME";'
...
https://stackoverflow.com/questions/59222483
复制相似问题