WMSYS.WM_CONCAT 突破4000字符的方法

来源:互联网 发布:爬虫是怎么数据挖掘 编辑:程序博客网 时间:2024/05/29 12:44

1.

create or replace TYPE zh_concat_im AUTHID CURRENT_USER AS OBJECT(  CURR_STR clob,  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,  RETURNVALUE OUT VARCHAR2,  FLAGS IN NUMBER)  RETURN NUMBER,  MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT zh_concat_im,   SCTX2 IN zh_concat_im) RETURN NUMBER);

2.

create or replace TYPE BODY zh_concat_imIS  STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT zh_concat_im)  RETURN NUMBER   IS  BEGIN  SCTX := zh_concat_im(NULL) ;  RETURN ODCICONST.SUCCESS;  END;  MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT zh_concat_im,  P1 IN VARCHAR2)   RETURN NUMBER   IS  BEGIN  IF(CURR_STR IS NOT NULL) THEN   CURR_STR := CURR_STR || ',' || P1;  ELSE  CURR_STR := P1;  END IF;  RETURN ODCICONST.SUCCESS;  END;  MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN zh_concat_im,  RETURNVALUE OUT VARCHAR2,  FLAGS IN NUMBER)  RETURN NUMBER   IS  BEGIN  RETURNVALUE := CURR_STR ;  RETURN ODCICONST.SUCCESS;  END;  MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT zh_concat_im,   SCTX2 IN zh_concat_im)   RETURN NUMBER   IS  BEGIN  IF(SCTX2.CURR_STR IS NOT NULL) THEN   SELF.CURR_STR := SELF.CURR_STR || ',' || SCTX2.CURR_STR ;  END IF;  RETURN ODCICONST.SUCCESS;  END;END;

3.

create or replace FUNCTION zh_concat(P1 VARCHAR2) RETURN VARCHAR2 AGGREGATE USING zh_concat_im ;
0 0
原创粉丝点击