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

Snowflake从其他表插入数据到staging表的存储过程调用出现行解析错误

错误原因定位
  • CASE语句语法缺失:第二个WHEN分支仅编写了判断条件,未补充THEN关键字及对应返回值,违反SQL语法规则,是触发解析错误的核心原因。
  • 转义字符格式错误:代码中使用的\"是HTML实体编码,无法在Snowflake JavaScript存储过程的上下文中被正确识别,会导致生成的SQL文本存在语法异常。
  • 存在不必要的语法冗余:INSERT INTO后嵌套SELECT的外层括号属于冗余写法,会增加SQL解析器的识别负担,存在触发歧义的可能。
修复后的完整代码
Create or replace procedure insert_into_staged1()
RETURNS STRING NOT NULL
LANGUAGE JAVASCRIPT
AS
$$
var sql_cmd = `Insert into staging_table 
select xyz as xyz, 
       abc as old_abc, 
       case 
         when rx_code in ('1234','5432') and trim(split_part(upper(abc),'*',1)) in ('GOOGLE','APPLE','SAMSUNG') 
           then trim(split_part(upper(abc),'*',1))
         when rx_code in ('6012') and trim(split_part(upper(abc),'*',1)) != '' 
           then trim(split_part(upper(abc),'*',1))
         else coalesce(replace(abc,'"', ''''), '') 
       end as abc_new 
from table2`
 var sql = snowflake.createStatement({sqlText: sql_cmd});
 var result = sql.execute();
 return 'success';
$$;
改动说明
  • 补全了第二个WHEN分支的判断逻辑和THEN返回值,对齐原有业务逻辑的同时符合SQL语法要求
  • 替换了错误的HTML转义编码,修正了字符串替换逻辑的转义写法,保证SQL文本可以被正确解析
  • 移除了SELECT外层的冗余括号,调整了SQL语句缩进,降低解析歧义同时提升可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:36:02