Heim >Datenbank >MySQL-Tutorial >替代Oracle函数wmsys_wm_concat()函数

替代Oracle函数wmsys_wm_concat()函数

WBOY
WBOYOriginal
2016-06-07 16:57:482475Durchsuche

RETURN ODCICONST.SUCCESS; END;END;/函数:create or replace FUNCTION zh_concat(P1 VARCHAR2) RETURN VARCHAR2 AGGREGATE U

1.

select postgresql('emp','ename') from dual

2.sys_connect_by_path

3.create or replace TYPE zh_concat_im
AUTHID CURRENT_USER AS OBJECT
(
   CURR_STR VARCHAR2(32767),
   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
);
/

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 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;
/

函数:
create or replace FUNCTION zh_concat(P1 VARCHAR2)
RETURN VARCHAR2 AGGREGATE USING zh_concat_im ;


修改标红部门,,可调整字段间分隔符

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:让RHEL5下的sqlplus支持回显Nächster Artikel:MySQL Tuning Summary