LISTAGG 失败,SQLCODE=-440

Posted

技术标签:

【中文标题】LISTAGG 失败,SQLCODE=-440【英文标题】:LISTAGG fails with SQLCODE=-440 【发布时间】:2014-03-04 21:43:26 【问题描述】:

当我尝试使用LISTAGG 时出现此错误

未找到具有兼容参数的类型为“FUNCTION”的名为“LISTAGG”的授权例程。SQLCODE=-440, SQLSTATE=42884, DRIVER=3.58.81

我正在使用 DB2 9.7.0.8。

这里是查询:

SELECT LISTAGG(columna,',') FROM table GROUP BY columb

列是varchar columnb 是 intpk

【问题讨论】:

显然,您为函数提供了不正确的参数。由于您选择不显示实际的 SQL 语句,因此您必须自己弄清楚细节。 @mustaccio SELECT LISTAGG(columna,',') FROM table GROUP BY columb columna is a varchar columnb is int and the pk 你为什么不把这个放在你的问题中,格式正确? 所示的虚假陈述看起来是正确的,因此可能性很小: 1) 您的 DB2 服务器版本不是 9.7 修订包 8,或者修订包安装不正确。 2) columna 数据类型不是 varchar 并且不能转换为 varchar 3) 您的 实际 查询包含错误。 对了,如果你说columnb是主键,那么按它分组有什么意义呢?结果将等同于select columna from table 【参考方案1】:

columnb不是唯一的,是PK之一。此表有复数pk。

解决方案是here

由于这里没有发布答案,并且正确答案已作为评论发布,因此请从@Ravi 的评论中发布此答案

【讨论】:

以上是关于LISTAGG 失败,SQLCODE=-440的主要内容,如果未能解决你的问题,请参考以下文章

原因:com.ibm.db2.jcc.am.SqlSyntaxErrorException:DB2 SQL 错误:SQLCODE=-440,SQLSTATE=42884

listagg 函数失败

为啥我的查询因 SQLCODE = -420 而失败?

LISTAGG 被评估并在无法访问的 case 语句中失败

更新操作失败,SQLCODE=-803,如何排除故障?

Oracle中的sqlerrm和sqlcode