zoukankan      html  css  js  c++  java
  • 解决 wm_concat函数 长度不够问题

     1 --创建类型
     2 CREATE OR REPLACE TYPE "T_LINK_LOB" AS OBJECT
     3 (
     4   V_LOB CLOB,
     5   STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT NOCOPY T_LINK_LOB)
     6     RETURN NUMBER,
     7   MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF  IN OUT NOCOPY T_LINK_LOB,
     8                                        VALUE IN VARCHAR2) RETURN NUMBER,
     9   MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF        IN T_LINK_LOB,
    10                                          RETURNVALUE OUT NOCOPY CLOB,
    11                                          FLAGS       IN NUMBER)
    12     RETURN NUMBER,
    13   MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT NOCOPY T_LINK_LOB,
    14                                      CTX2 IN T_LINK_LOB) RETURN NUMBER
    15 );
    16 
    17 --创建类型内容
    18 CREATE OR REPLACE TYPE BODY T_LINK_LOB IS
    19   STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT NOCOPY T_LINK_LOB)
    20     RETURN NUMBER IS
    21   BEGIN
    22     SCTX := T_LINK_LOB(NULL);
    23     DBMS_LOB.CREATETEMPORARY(SCTX.V_LOB, TRUE, DBMS_LOB.SESSION);
    24     DBMS_LOB.OPEN(SCTX.V_LOB, DBMS_LOB.LOB_READWRITE);
    25     RETURN ODCICONST.SUCCESS;
    26   END;
    27 
    28   MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF  IN OUT NOCOPY T_LINK_LOB,
    29                                        VALUE IN VARCHAR2) RETURN NUMBER IS
    30   BEGIN
    31     DBMS_LOB.WRITEAPPEND(SELF.V_LOB, LENGTH(VALUE) + 1, VALUE || ',');
    32     RETURN ODCICONST.SUCCESS;
    33   END;
    34 
    35   MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF        IN T_LINK_LOB,
    36                                          RETURNVALUE OUT NOCOPY CLOB,
    37                                          FLAGS       IN NUMBER) RETURN NUMBER IS
    38   BEGIN
    39     DBMS_LOB.CREATETEMPORARY(RETURNVALUE, TRUE, DBMS_LOB.CALL);
    40     DBMS_LOB.COPY(RETURNVALUE,
    41                   SELF.V_LOB,
    42                   DBMS_LOB.GETLENGTH(SELF.V_LOB) - 1);
    43     RETURN ODCICONST.SUCCESS;
    44   END;
    45 
    46   MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT NOCOPY T_LINK_LOB,
    47                                      CTX2 IN T_LINK_LOB) RETURN NUMBER IS
    48   BEGIN
    49     NULL;
    50     RETURN ODCICONST.SUCCESS;
    51   END;
    52 END;
    53 
    54 --创建函数
    55 CREATE OR REPLACE FUNCTION F_LINK_LOB(P_STR VARCHAR2) RETURN CLOB AGGREGATE USING T_LINK_LOB;
    56 
    57 --调用方式
    58 select F_LINK_LOB(d.sid) from pmp_p_info d;
  • 相关阅读:
    springboot集成flowable oracle数据库版本报错
    Vue.js中this.$nextTick()的使用
    Centos下虚拟环境的创建以及python3安装
    SaltStack实战
    第一章 Jenkins安装配置
    JavaScript 常用正则表达式
    ps 掉出字符设备面板,修改颜色等
    博客验证码破解
    我终于想起密码了~
    Linux grep 命令
  • 原文地址:https://www.cnblogs.com/webczw/p/4177638.html
Copyright © 2011-2022 走看看