博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle 行拼接 wmsys.wm_concat扩展
阅读量:5063 次
发布时间:2019-06-12

本文共 2221 字,大约阅读时间需要 7 分钟。

将多行数据拼接成一行:

--wmsys.wm_concatselect wmsys.wm_concat(a.hdid) as test from flow_currentrecord a where a.flowid=222 group by a.flowid;

但有大小限制:字符串缓冲区太小,超过varchar 4000长度。

扩展:更改返回类型为clob

--Type 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 ); / --TYPE BODY 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;  / --FUNCTION  create or replace FUNCTION zh_concat(P1 VARCHAR2) RETURN clob AGGREGATE USING zh_concat_im;

调用:

select zh_concat(a.hdid) as test from flow_currentrecord a where a.flowid=222 group by a.flowid;

 

 

转载于:https://www.cnblogs.com/i-blog/p/3478219.html

你可能感兴趣的文章
idea设置自定义图片
查看>>
[高级]Android多线程任务优化1:探讨AsyncTask的缺陷
查看>>
选择器
查看>>
rownum 的使用
查看>>
Mysql与Oracle 的对比
查看>>
MVC系列博客之排球计分(三)模型类的实现
查看>>
npm安装
查看>>
阅读笔记02
查看>>
2019年春季学期第二周作业
查看>>
2014北邮计算机考研复试上机题解(上午+下午)
查看>>
mySQL 教程 第7章 存储过程和函数
查看>>
OGG同步Oracle到Kafka(Kafka Connect Handler)
查看>>
算法笔记_056:蓝桥杯练习 未名湖边的烦恼(Java)
查看>>
idea的maven项目无法引入junit
查看>>
jquery实现限制textarea输入字数
查看>>
thinkphp5 csv格式导入导出(多数据处理)
查看>>
页面置换算法-LRU(Least Recently Used)c++实现
查看>>
如何获取Android系统时间是24小时制还是12小时制
查看>>
fur168.com 改成5917电影
查看>>
PHP上传RAR压缩包并解压目录
查看>>