程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Oracle 字符串连接太长大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Oracle 字符串连接太长?

开发过程中遇到Oracle 字符串连接太长的问题如何解决?下面主要结合日常开发的经验,给出你关于Oracle 字符串连接太长的解决方法建议,希望对你解决Oracle 字符串连接太长有所启发或帮助;

我正在尝试执行以下查询,该查询通过将值传递到变量中来对表进行透视。它适用于其他查询。

DECLARE
    cols VARCHAR2(30000);
BEGIN
    SELECT
        ListAGG(''''
                || agr_name
                || ''' as "'
                || agr_name
                || '"',',') WITHIN GROUP(
            ORDER BY
                agr_name
        )
    INTO cols
    FROM
        (
            SELECT disTinCT
                to_char(agr_Name) AS agr_name
            FROM
                dat_skills
--            WHERE
--                ROWNUM < 400
        );

    EXECUTE IMMEDIATE q'[
    CREATE OR replaCE VIEW vw_dat_skills AS
    SELECT
        *
    FROM
        dat_skills PIVOT (
            COUNT ( agr_name )
            FOR agr_name
            IN (]'||cols||q'[)
        )
    ]'
    ;
END;

但我收到以下错误:

ORA-01489: result of String concatenation is too long
01489. 00000 -  "result of String concatenation is too long"
*Cause:    String concatenation result is more than the maximum size.
*Action:   Make sure that the result is less than the maximum size.

如果我执行 SELEct disTinct 它会检索 138 行,总长度为 2777 个字符。

WITH aux AS (
    SELECT disTinCT
        to_char(agr_Name) AS agr_name
    FROM
        dat_skills
)
SELECT
    count(1),sum(length(agr_Name))
FROM
    aux

是否有任何解决方法可以绕过此限制?还是我做错了什么?

解决方法

您没有做错任何事情(可能除了计算,因为您必须添加单引号和“as”,它会添加到每个值查询返回),但是 LISTAGG 具有较高的限制设置为 4000 个字符。

怎么办?切换到@R_29_6353@。如何?像这样:

SQL> SELECT LISTAGG (dname,',') WITHIN GROUP (ORDER BY dName) AS r_listagg,2         --
  3         RTRIM (
  4            @R_29_6353@ (XMLELEMENT (e,dname || ',') ORDER BY dName).EXTRACT (
  5               '//text()'),6            ',') r_xmalagg
  7    FROM dept
  8  /

R_LISTAGG
--------------------------------------------------------------------------------
R_XMALAGG
--------------------------------------------------------------------------------
ACCOUNTinG,OPERATIONS,RESEARCH,SALES
ACCOUNTinG,SALES


SQL>

重写它,使其适用于您的表和列。

大佬总结

以上是大佬教程为你收集整理的Oracle 字符串连接太长全部内容,希望文章能够帮你解决Oracle 字符串连接太长所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: