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

DB2 LUW创建返回表函数时遇SQLCODE=-104错误求助

解决DB2 LUW创建返回表函数的SQLCODE=-104错误

错误原因

SQLCODE=-104、SQLSTATE=42601的语法错误,根源是你编写的函数不符合DB2 LUW对返回表类型SQL函数的语法规范:在BEGIN ATOMIC块中直接用RETURN + SELECT语句的写法不被支持,DB2无法识别该语法结构,因此抛出意外结束标记的错误。

修正方案

以下两种写法均可正确创建该返回表函数:

方案1:省略BEGIN ATOMIC块,直接返回查询结果

适用于逻辑简单的场景,直接将SELECT语句作为函数体:

CREATE OR REPLACE FUNCTION FUNC_TT ()
 RETURNS TABLE (ID CHAR(1))
 LANGUAGE SQL
 READS SQL DATA
 NO EXTERNAL ACTION
 DETERMINISTIC
 RETURN
   SELECT '1'
   FROM SYSIBM.SYSDUMMY1;

方案2:在BEGIN ATOMIC块中用RETURN TABLE()包裹查询

如果后续需要扩展复杂逻辑(如变量定义、条件判断),可保留BEGIN ATOMIC块,但必须用RETURN TABLE()包裹查询语句:

CREATE OR REPLACE FUNCTION FUNC_TT ()
 RETURNS TABLE (ID CHAR(1))
 LANGUAGE SQL
 READS SQL DATA
 NO EXTERNAL ACTION
 DETERMINISTIC
 BEGIN ATOMIC
   RETURN TABLE(
     SELECT '1'
     FROM SYSIBM.SYSDUMMY1
   );
 END

验证方法

函数创建成功后,可通过以下语句调用并查看结果:

SELECT * FROM TABLE(FUNC_TT());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:54:54