Snowflake JavaScript存储过程报prefix operation语法错误如何解决
报错原因
该报错是关键字命名冲突导致的语法解析错误:
delete是JavaScript原生保留关键字,本身是用于删除对象属性的操作符,不允许作为自定义函数/变量名使用- Snowflake存储过程的解析器会对JS代码块内的标识符做归一化处理,你定义的大写
Delete函数会被识别为小写的关键字delete,解析器会把var ret=Delete();判定为对delete操作符的错误调用,操作符后需要跟合法的待删除左值表达式,因此抛出Invalid left-hand side expression in prefix operation错误。
修复方案
将自定义函数名修改为和JS关键字完全无关的名称即可,比如改为deleteTableRecords、clearRepositoryTable这类都可以。
修复后的完整存储过程代码如下:
CREATE OR REPLACE PROCEDURE "SP_PROCEDURE"() RETURNS VARCHAR(16777216) LANGUAGE JAVASCRIPT STRICT AS $$ function deleteRepositoryTable() { var DeleteRepositoryTable=`DELETE FROM "TABLEA"`; try{ snowflake.execute({sqlText:DeleteRepositoryTable}); return "Success"; } catch(err) { return "Error Ocurred While Loading Data" + err; } } var ret=deleteRepositoryTable(); return ret; $$
内容的提问来源于stack exchange,提问作者akshindesnowflake
相关产品推荐
相关产品推荐

