【发布时间】:2016-02-02 05:07:38
【问题描述】:
我正在使用 LISTAGG 连接我的字符串,这是我面临的一个问题 - 连接时抛出以下错误
"字符串连接的结果太长。 字符串连接结果大于最大大小。 确保结果小于最大大小。 "
我希望连接的字符串超过 4000 个字符...
【问题讨论】:
我正在使用 LISTAGG 连接我的字符串,这是我面临的一个问题 - 连接时抛出以下错误
"字符串连接的结果太长。 字符串连接结果大于最大大小。 确保结果小于最大大小。 "
我希望连接的字符串超过 4000 个字符...
【问题讨论】:
如果您希望结果超过 4000 个字符并且您使用的是 11g,则不能使用 listagg。 listagg 在 SQL 中返回 varchar2 和 varchar2 被限制为 4000 个字节(在 12.1 中可以增加到 32k,我的猜测是 listagg 将能够返回一个最长为 32k 的字符串但我没试过)。
在 11g 中,如果您希望结果长于 4000 字节,则必须使用 clob。我所知道的最好的方法是从 Tim Hall 的 Oracle 字符串聚合技术页面中获取 user-defined aggregate function,并将其修改为使用并返回 clob 而不是 varchar2。 this German language site 上提供了一个基于 CLOB 的实现示例,尽管即使您不会说德语,代码也很容易阅读。
【讨论】: