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);
2 /
Type created.
SQL> CREATE OR REPLACE FUNCTION concat_array(p tab_varchar2) RETURN CLOB IS
2
l_result CLOB;
3 BEGIN
4
FOR cc IN (SELECT column_value FROM TABLE(p) ORDER BY column_value)
LOOP
5
l_result := l_result ||' '|| cc.column_value;
6
END LOOP;
7
return l_result;
8 END;
9 /
Function created.
SQL> SELECT item,
2
concat_array(CAST (collect(attribute) AS tab_varchar2))
attributes
3 FROM
data
4 GROUP BY
item;
ITEM ATTRIBUTES
1 a b c
2 a c
3 a
b
原文在此处:
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
Function created.
SQL> SELECT item,
ITEM ATTRIBUTES
1
2
3

加载中…