首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >雪花-第一步-句法有什么问题?

雪花-第一步-句法有什么问题?
EN

Stack Overflow用户
提问于 2019-12-07 02:27:48
回答 2查看 880关注 0票数 1
代码语言:javascript
运行
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-07 17:29:52

我强烈建议在JavaScript过程中对SQL字符串使用反引号,以及变量绑定。

代码语言:javascript
运行
复制
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

  • Strings可以是多行

这两个特性对于SQL代码都非常有用。

票数 3
EN

Stack Overflow用户

发布于 2019-12-07 06:20:32

在像这样的Javascript中,可以用反斜杠(\')而不是双引号('')来转义单引号。

代码语言:javascript
运行
复制
...
'INSERT INTO PROC_LOG ("PROC_NAME","EXEC_TIME") SELECT \'value 1\' AS "PROC_NAME", CURRENT_TIMESTAMP as "EXEC_TIME";'
...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59222483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档