You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Snowflake存储过程时遇SQL编译错误:行1位置4意外字符'S'

问题排查与修复方案

你遇到的SQL compilation error: syntax error line 1 at position 4 unexpected 'S'是由存储过程定义的语法错误直接导致的,同时存储过程代码中还存在多处JavaScript和SQL语法问题,具体如下:

1. 直接触发错误的根源

存储过程定义第一行存在语法错误:

CREATE OR REPLACE PROCEDURE Swapna_test_proc20)

过程名后缺少左括号且多了一个右括号,正确的无参数存储过程定义应为:

CREATE OR REPLACE PROCEDURE Swapna_test_proc20()

SQL解析器因这一行语法不符合规则,抛出了位置4的错误提示。

2. 存储过程内部代码的其他错误及修复

字符串与符号问题

  • var err=" 缺少闭合双引号,应改为 var err="";
  • var procResult2 = DATA SUCCESSFULLY LOADED": 字符串未加引号,且结尾误用冒号代替分号,应改为 var procResult2 = "DATA SUCCESSFULLY LOADED";
  • getColumnValue("WHOLESALE_ID'); 引号不匹配,统一改为双引号或单引号,比如 getColumnValue("WHOLESALE_ID")

变量名格式错误

JavaScript变量名不能包含空格,需修改:

  • table load stmt → table_load_stmt
  • columnValue load → columnValue_load
  • substring load qry → substring_load_qry

SQL语句与Snowflake API调用错误

  • var table_load = 'Select "WHOLESALE_ID" from 字符串未闭合,带空格的表名需用双引号包裹,修改为:
    var table_load = 'Select "WHOLESALE_ID" from "CPH DB DEV ENRICH BV ANALYTICS_CH GALEXIS GUTSCHRIFT OUTBOUND BONUSANDDISCOUNT_INVOI"';
    
  • snowflake.createStatement ((sqlText: table load)). 参数格式错误,需用{}包裹配置对象,修改为:
    var table_load_stmt = snowflake.createStatement({sqlText: table_load});
    
  • 调用getColumnValue前需先调用next()移动到结果集的行,否则会报错,示例:
    if (exe_table_load_stmt.next()) {
        var columnValue_load = exe_table_load_stmt.getColumnValue("WHOLESALE_ID");
    }
    
  • substring函数参数错误(第一个参数应为目标字符串/列),SQL拼接需保证语法正确,示例:
    var substring_load_qry = `select substring("WHOLESALE_ID", 1, 3) as extracted_string from "${columnValue_load}"`;
    

修复后的完整示例代码

CREATE OR REPLACE PROCEDURE Swapna_test_proc20()
RETURNS VARCHAR
LANGUAGE JAVASCRIPT
EXECUTE AS CALLER
AS
$$
var err = "";
var procResult2 = "DATA SUCCESSFULLY LOADED";
try {
    // 查询指定表的WHOLESALE_ID
    var table_load = 'Select "WHOLESALE_ID" from "CPH DB DEV ENRICH BV ANALYTICS_CH GALEXIS GUTSCHRIFT OUTBOUND BONUSANDDISCOUNT_INVOI"';
    var table_load_stmt = snowflake.createStatement({sqlText: table_load});
    var exe_table_load_stmt = table_load_stmt.execute();
    
    // 处理结果集
    if (exe_table_load_stmt.next()) {
        var columnValue_load = exe_table_load_stmt.getColumnValue("WHOLESALE_ID");
        // 注意:假设columnValue_load是合法表名,需确保其有效性
        var substring_load_qry = `select substring("WHOLESALE_ID", 1, 3) as extracted_string from "${columnValue_load}"`;
        var substring_stmt = snowflake.createStatement({sqlText: substring_load_qry});
        var substring_result = substring_stmt.execute();
    }
    return procResult2;
} catch (e) {
    err = "Error: " + e.message;
    return err;
}
$$;

内容的提问来源于stack exchange,提问作者Swapnamayee Panda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 18:52:36