zoukankan      html  css  js  c++  java
  • Oracle将一列值逗号拼接wm_concat函数

    --Oracle12c不再支持该函数,需要手动处理
    --管理员登录授权给用户权限
    GRANT CREATE SYNONYM TO c##sdic;
    /
    --创建 TYPE
    CREATE OR REPLACE TYPE WM_CONCAT_IMPL AS OBJECT
    (
    CURR_STR VARCHAR2(32767), 
    STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT WM_CONCAT_IMPL) RETURN NUMBER,
    MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT WM_CONCAT_IMPL,
    P1 IN VARCHAR2) RETURN NUMBER,
    MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN WM_CONCAT_IMPL,
    RETURNVALUE OUT VARCHAR2,
    FLAGS IN NUMBER)
    RETURN NUMBER,
    MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT WM_CONCAT_IMPL,
    SCTX2 IN WM_CONCAT_IMPL) RETURN NUMBER
    );
    /
    --定义类型body:
    CREATE OR REPLACE TYPE BODY WM_CONCAT_IMPL
    IS
    STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT WM_CONCAT_IMPL)
    RETURN NUMBER
    IS
    BEGIN
    SCTX := WM_CONCAT_IMPL(NULL) ;
    RETURN ODCICONST.SUCCESS;
    END;
    MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT WM_CONCAT_IMPL,
    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 WM_CONCAT_IMPL,
    RETURNVALUE OUT VARCHAR2,
    FLAGS IN NUMBER)
    RETURN NUMBER
    IS
    BEGIN
    RETURNVALUE := CURR_STR ;
    RETURN ODCICONST.SUCCESS;
    END;
    MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT WM_CONCAT_IMPL,
    SCTX2 IN WM_CONCAT_IMPL)
    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 wm_concat(P1 VARCHAR2)
    RETURN VARCHAR2 AGGREGATE USING WM_CONCAT_IMPL ;
    /
    --创建同义词并授权
    create public synonym WM_CONCAT_IMPL for sys.WM_CONCAT_IMPL
    /
    create public synonym wm_concat for sys.wm_concat
    /
    grant execute on WM_CONCAT_IMPL to public
    /
    grant execute on wm_concat to public
    /

  • 相关阅读:
    OEA框架学习:缓存
    2012年 博文整理
    技术支持经验总结
    OEA框架学习:元数据设计
    安装后新建Android出现“AndroidManifest.xml 系统找不到指定的文件”解决方案
    Android控件学习笔记之 GridView(实现九宫格)
    获取url地址中主机的域名
    C# 语音读取字符串
    JSON省市联动
    MOTO Droid手机自定义本地铃声设置方法
  • 原文地址:https://www.cnblogs.com/xmqa/p/7149444.html
Copyright © 2011-2022 走看看