如何解析ORA-01489:字符串串联的结果太长



我有一个表temp,我正试图查询如下:

SELECT
LISTAGG( 'MAX(CASE WHEN CATEGORY = '''||CATEGORY||''' THEN "'||"LEVEL"||'" END) AS "'||
"LEVEL"||'_'||CATEGORY||'"' , ',' ) WITHIN GROUP ( ORDER BY CATEGORY, "LEVEL" DESC
) AS col2
FROM
(
SELECT DISTINCT
"LEVEL",
CATEGORY
FROM
TEMP );

`

我得到错误为[代码:1489,SQL状态:72000]ORA-01489:字符串串联的结果太长我无法摆脱这个错误。我使用的是DBVisualizer的SQL Commander我之前也尝试过声明变量,但似乎不起作用:

@ECHO ${col2 ||32767||varchar2}$

我尝试了ALTER SYSTEM SET MAX_STRING_SIZE = EXTENDED;,它也给出了错误:[代码:2065,SQL状态:42000]ORE-02065:ALTER SYSTEM的非法选项。

代码方面有什么问题吗?如果没有,这个的解决方法是什么

如果LISTAGG不起作用(很明显,结果字符串超过4000个字符(,请切换到不受此限制的优雅XMLAGG。结果应该是相同的(比较这两个(:

SQL> select listagg(dname, ',') within group (order by dname) result
2  from dept;
RESULT
--------------------------------------------------------------------------------
ACCOUNTING,OPERATIONS,RESEARCH,SALES

SQL> select rtrim(xmlagg(xmlelement(e, dname ||',') order by dname).extract
2           ('//text()'), ',') result
3  from dept;
RESULT
--------------------------------------------------------------------------------
ACCOUNTING,OPERATIONS,RESEARCH,SALES
SQL>

相关内容

  • 没有找到相关文章

最新更新