我正在使用LISTAGG连接我的字符串,这里面临一个问题 - 连接它时会抛出以下错误
"字符串连接的结果太长。 字符串连接结果超过最大大小。 确保结果小于最大大小。 "
我希望连接的字符串超过4000个字符......
答案 0 :(得分:0)
如果您希望结果超过4000个字符且使用11g,则无法使用listagg
。 listagg
返回varchar2
,SQL中的varchar2
限制为4000字节(在12.1中可以增加到32k,我的猜测是listagg
可以返回长度达32k的字符串,但我没有尝试过。)
在11g中,如果您希望结果长于4000个字节,则必须使用clob
。我知道这样做的最好方法是从Tim Hall的Oracle字符串聚合技术页面上获取user-defined aggregate function并修改它以使用并返回clob
而不是varchar2
。 this German language site上提供了基于CLOB的实现的一个示例,尽管即使您不是德语,代码也很容易阅读。