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

拼接变量构造动态SQL报错:不支持非常量源表达式赋值

解决动态列名拼接SQL的报错问题

报错000002 (0A000): Unsupported feature 'assignment from non-constant source expression'是因为数据库不允许将动态生成的变量(如$columnNames)直接与字符串常量拼接后赋值给另一个变量。需要把列名查询和SQL文本拼接合并为一个单一查询,直接生成完整的SQL语句后赋值:

SET sqlText = (
    SELECT 'SELECT ' || LISTAGG(a.column_name, ', ') || ' from myDB.MySchema.myTable1
where sold > 0 and hour = ''2022-08-01 13:00:00.000'' 
and id = ''zzzseee2323''
limit 10'
    FROM INFORMATION_SCHEMA.COLUMNS a
    INNER JOIN INFORMATION_SCHEMA.COLUMNS b
        ON a.column_name = b.column_name
    WHERE a.TABLE_NAME = 'myTable1'
      AND b.TABLE_NAME = 'myTable2'
);

关键说明:

  • 把原本分开的列名查询和SQL拼接逻辑合并,通过LISTAGG直接将共同列名拼接成逗号分隔的字符串,再与固定SQL部分拼接成完整查询语句。
  • 避免了先赋值列名变量再拼接的两步操作,绕过了数据库对非常量赋值的限制。

执行时依然使用:

EXECUTE IMMEDIATE $sqlText;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:40:28