加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ORA-01489: result of string concatenation is too long (L

(2016-09-14 15:24:35)
标签:

it

分类: 技术-Oracle
在使用Listagg时候,报ORA-01489错误。原来是字符太长超过4000。后找得解决方案如下:
原文在此处:
http://stackoverflow.com/questions/11541383/ordering-by-list-of-strings-in-oracle-sql-without-listagg

都是IT人员,直接上代码:
SQL> CREATE TYPE tab_varchar2 AS TABLE OF VARCHAR2(4000);
  /

Type created.

SQL> CREATE OR REPLACE FUNCTION concat_array(p tab_varchar2) RETURN CLOB IS
     l_result CLOB;
  BEGIN
     FOR cc IN (SELECT column_value FROM TABLE(p) ORDER BY column_value) LOOP
        l_result := l_result ||' '|| cc.column_value;
     END LOOP;

     return l_result;
  END;
  /

Function created.

SQL> SELECT item,
         concat_array(CAST (collect(attribute) AS tab_varchar2)) attributes
    FROM data
   GROUP BY item;

ITEM ATTRIBUTES
   a b c
   a c
   a b

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有