【发布时间】: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