数值或值错误:字符串缓冲区太小ORA-06512:在“WMSYS.WM_CONCAT_IMPL”,第30行

时间:2014-03-18 23:08:41

标签: group-by oracle10g group-concat

我尝试使用Oracle 10g的WM_CONCAT函数将多行分组为一行。

但是当我查询运行时,我收到以下错误:

ORA-06502:PL / SQL:数字或值错误:字符串缓冲区太小 ORA-06512:在" WMSYS.WM_CONCAT_IMPL",第30行 06502. 00000 - " PL / SQL:数字或值错误%s"

我的查询输出是:

5319 | 64764011907 | 6893,1109,1120,1297,1327(逗号分隔的客户ID存储列表)

我将无法创建类型 - 缺乏优势。

如果我可以使用Oracle 10g中的某种不同方法进行分组,请告诉我。

1 个答案:

答案 0 :(得分:1)

Tim Hall有一个非常规范的string aggregation techniques in Oracle列表。不幸的是,如果结果需要能够超过4000个字节并且您无法在数据库中创建任何类型的对象并且您使用10.2,我不相信它们中的任何一个都能为您工作。 sys_connect_by_path方法是唯一值得测试的方法,但几乎可以肯定limited to 4000 bytes

如果您可以访问各种XML函数,则可能use the xmlagg function to produce a CLOB