【问题标题】:How to resolve ORA-01489: result of string concatenation is too long [duplicate]如何解决 ORA-01489:字符串连接的结果太长 [重复]
【发布时间】:2021-01-18 16:13:11
【问题描述】:

我有一张表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] ORA-02065:ALTER SYSTEM 的非法选项。

如果不是解决方法,代码前面有什么问题吗

【问题讨论】:

  • 我相信您在上一个问题中指出您不希望有超过 12 列,如果我理解,这意味着您不希望有超过 4 个不同的 category价值观。如果是这种情况,listagg 结果将超过 4000 个字符是没有意义的。你有理由相信结果应该超过 4000 个字符吗? select distinct category from temp 返回什么?
  • 您好,请检查输出:dbfiddle.uk/…。由于此错误,我无法使用 dbvisualizer 运行:ORA-01489:字符串连接的结果太长 ORA-06512:在第 15 行
  • 最大Sets 我在temp 表中将是15。
  • 我很困惑。如果我取消注释 open v_recordset for v_sql 行(以及 v_recordset 的声明),我不会在 dbfiddle 中收到错误。你能重现你在 dbfiddle 中看到的错误吗?
  • 如果您复制上一步中构建的查询并将其作为最后一步运行dbfiddle.uk/…

标签: plsql oracle11g dbvisualizer


【解决方案1】:

如果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>

【讨论】:

  • 你能告诉我我提到的代码吗?这个例子我已经看过很多次了
  • 如果你发布了测试用例,我可能会尝试。
  • 我已经在cmets中添加了链接。
猜你喜欢
  • 2016-05-28
  • 2017-02-06
  • 2015-06-28
  • 2011-08-13
  • 2013-04-04
  • 1970-01-01
  • 2012-05-12
  • 1970-01-01
  • 2013-10-03
相关资源
最近更新 更多