Created
November 6, 2013 07:03
-
-
Save wliment/7332083 to your computer and use it in GitHub Desktop.
字符串聚合函数,第三方实现
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 clob, | |
FLAGS IN NUMBER) | |
RETURN NUMBER, | |
MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT zh_concat_im, | |
SCTX2 IN zh_concat_im) RETURN NUMBER | |
); | |
CREATE OR REPLACE TYPE BODY zh_concat_im | |
IS | |
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 clob, | |
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; | |
create or replace FUNCTION zh_concat(P1 VARCHAR2) | |
RETURN clob AGGREGATE USING zh_concat_im ; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment