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

SAP HANA存储过程中STRING_AGG结果赋值变量报错排查

SAP HANA存储过程赋值报错排查与修正

报错原因分析

你遇到的错误源于两个语法问题:

  • 标量变量赋值语法错误:SQLScript中给COLS1这类单值标量变量赋值查询结果时,不能直接用变量 := SELECT ...的形式,必须使用SELECT ... INTO 变量的语法,或是将查询作为子句包裹在括号中完成赋值。
  • 本地表变量引用错误:你声明的本地表变量TAB1属于SQLScript本地对象,在FROM子句中直接写表名即可,不需要加冒号(冒号仅用于绑定输入参数或标量变量)。

修正后的存储过程代码

CREATE procedure TAB_COMP (IN T1 VARCHAR(30), IN T2 VARCHAR(30))
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER

AS
BEGIN

DECLARE TAB1 TABLE (COLUMN_NAME VARCHAR(500));
DECLARE TAB2 TABLE (COLUMN_NAME VARCHAR(500));

DECLARE COLS1 VARCHAR(500);
DECLARE COLS2 VARCHAR(500);

TAB1 = SELECT COLUMN_NAME FROM TABLE_COLUMNS WHERE TABLE_NAME= :T1 ORDER BY POSITION;
TAB2 = SELECT COLUMN_NAME FROM TABLE_COLUMNS WHERE TABLE_NAME= :T2 ORDER BY POSITION;
 
-- 方式1:使用INTO语法完成赋值
SELECT STRING_AGG(COLUMN_NAME,',') INTO COLS1 FROM TAB1;

-- 方式2:子查询形式赋值(两种方式二选一即可)
-- COLS1 := (SELECT STRING_AGG(COLUMN_NAME,',') FROM TAB1);

END

补充提示

  • 两种赋值方式效果一致,任选其一即可。
  • 如果拼接后的列名字符串可能超过500长度,建议适当调大COLS1和COLS2的声明长度,避免出现字符串截断问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:27:44