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

创建返回表的Snowflake JavaScript函数时出现语法错误求助

问题分析与解决方法

错误原因

你犯了两个关键问题:

  1. 函数声明为LANGUAGE JAVASCRIPT,但函数体直接写了SQL语句——JavaScript引擎无法识别SQL语法,这是触发Unexpected identifier错误的核心原因。
  2. 参数名mTRCS_NM与表字段名MTRCS_NM同名,直接引用会导致变量歧义。

修正后的代码

create or replace function MTRCS_NUM_TBL_FUNC(mTRCS_NM VARCHAR(1000))
returns table (SESN_UUID VARCHAR(100), MTRCS_NM VARCHAR(1000))
LANGUAGE JAVASCRIPT
as
$$
    // 用占位符定义SQL,避免命名冲突
    var sqlQuery = `SELECT DISTINCT SESN_UUID, MTRCS_NM FROM MTRCS WHERE MTRCS_NM = ?`;
    // 执行SQL并绑定参数
    var stmt = snowflake.execute({
        sqlText: sqlQuery,
        binds: [MTRCS_NUM_TBL_FUNC.mTRCS_NM]
    });
    // 组装返回结果
    var output = [];
    while (stmt.next()) {
        output.push({
            SESN_UUID: stmt.getColumnValue(1),
            MTRCS_NM: stmt.getColumnValue(2)
        });
    }
    return output;
$$;

关键改动说明

  • 使用Snowflake JavaScript UDF标准的snowflake.execute()方法执行SQL,让JavaScript引擎能正确处理数据库查询。
  • 通过?占位符+binds数组传递参数,既解决了参数与字段的命名冲突,也避免了SQL注入风险。
  • 循环读取查询结果集,组装成与函数返回表结构匹配的对象数组返回。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:54:58