原文: https://blog.csdn.net/xmm_1030/article/details/46724153
使用wmsys.wm_concat多列合成一列遇到问题
ORA-22813: 操作数值超出系统的限制
10G 总长度不能超过 4k 。
已经写了存储过程作为替代方案了
-
CREATE
OR
REPLACE
TYPE zh_concat_im
-
AUTHID
CURRENT_USER
AS
OBJECT
-
-
-
STATIC
FUNCTION ODCIAGGREGATEINITIALIZE(SCTX
IN
OUT zh_concat_im)
RETURN
NUMBER,
-
MEMBER
FUNCTION ODCIAGGREGATEITERATE(
SELF
IN
OUT zh_concat_im,
-
P1
IN
VARCHAR2)
RETURN
NUMBER,
-
MEMBER
FUNCTION ODCIAGGREGATETERMINATE(
SELF
IN zh_concat_im,
-
-
-
-
MEMBER
FUNCTION ODCIAGGREGATEMERGE(
SELF
IN
OUT zh_concat_im,
-
SCTX2
IN zh_concat_im)
RETURN
NUMBER
-
-
-
CREATE
OR
REPLACE
TYPE
BODY zh_concat_im
-
-
STATIC
FUNCTION ODCIAGGREGATEINITIALIZE(SCTX
IN
OUT zh_concat_im)
-
-
-
-
SCTX := zh_concat_im(
NULL) ;
-
RETURN ODCICONST.SUCCESS;
-
-
MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT zh_concat_im,
-
-
-
-
-
-
IF(CURR_STR
IS
NOT
NULL)
THEN
-
CURR_STR := CURR_STR ||
',' || P1;
-
-
-
-
RETURN ODCICONST.SUCCESS;
-
-
MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN zh_concat_im,
-
-
-
-
-
-
RETURNVALUE := CURR_STR ;
-
RETURN ODCICONST.SUCCESS;
-
-
MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT zh_concat_im,
-
-
-
-
-
IF(SCTX2.CURR_STR
IS
NOT
NULL)
THEN
-
SELF.CURR_STR := SELF.CURR_STR ||
',' || SCTX2.CURR_STR ;
-
-
RETURN ODCICONST.SUCCESS;
-
-
-
-
create
or
replace
FUNCTION zh_concat(P1
VARCHAR2)
-
RETURN
clob
AGGREGATE
USING zh_concat_im ;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/133735/viewspace-2746720/
,如需转载,请注明出处,否则将追究法律责任。