没有wm_concat是因为oracle12c数据库中废弃了wm_concat函数

--–登录dba用户sys权限,为wmsys用户创建可用的wm_concat函数,依次执行以下语句
  • 第一步 定义对象类型
  1. CREATE OR REPLACE TYPE wmsys.WM_CONCAT_IMPL AS OBJECT
  2. (
  3. CURR_STR VARCHAR2(32767),
  4. STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT WM_CONCAT_IMPL) RETURN NUMBER,
  5. MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT WM_CONCAT_IMPL,
  6. P1 IN VARCHAR2) RETURN NUMBER,
  7. MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN WM_CONCAT_IMPL,
  8. RETURNVALUE OUT VARCHAR2,
  9. FLAGS IN NUMBER)
  10. RETURN NUMBER,
  11. MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT WM_CONCAT_IMPL,
  12. SCTX2 IN WM_CONCAT_IMPL) RETURN NUMBER
  13. );
  14. /
  • 第二步 定义类型body:  
  1. CREATE OR REPLACE TYPE BODY wmsys.WM_CONCAT_IMPL
  2. IS
  3. STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT WM_CONCAT_IMPL)
  4. RETURN NUMBER
  5. IS
  6. BEGIN
  7. SCTX := WM_CONCAT_IMPL(NULL) ;
  8. RETURN ODCICONST.SUCCESS;
  9. END;
  10. MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT WM_CONCAT_IMPL,
  11. P1 IN VARCHAR2)
  12. RETURN NUMBER
  13. IS
  14. BEGIN
  15. IF(CURR_STR IS NOT NULL) THEN
  16. CURR_STR := CURR_STR || ',' || P1;
  17. ELSE
  18. CURR_STR := P1;
  19. END IF;
  20. RETURN ODCICONST.SUCCESS;
  21. END;
  22. MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN WM_CONCAT_IMPL,
  23. RETURNVALUE OUT VARCHAR2,
  24. FLAGS IN NUMBER)
  25. RETURN NUMBER
  26. IS
  27. BEGIN
  28. RETURNVALUE := CURR_STR ;
  29. RETURN ODCICONST.SUCCESS;
  30. END;
  31. MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT WM_CONCAT_IMPL,
  32. SCTX2 IN WM_CONCAT_IMPL)
  33. RETURN NUMBER
  34. IS
  35. BEGIN
  36. IF(SCTX2.CURR_STR IS NOT NULL) THEN
  37. SELF.CURR_STR := SELF.CURR_STR || ',' || SCTX2.CURR_STR ;
  38. END IF;
  39. RETURN ODCICONST.SUCCESS;
  40. END;
  41. END;
  42. /
  • 第三步 自定义行变列函数: 
  1. CREATE OR REPLACE FUNCTION wmsys.wm_concat(P1 VARCHAR2)
  2. RETURN VARCHAR2 AGGREGATE USING wmsys.WM_CONCAT_IMPL ;
  3. /
  • 第四步 给其创建同义词及授权,以供其他用户能正常使用。 
  1. create public synonym WM_CONCAT_IMPL for wmsys.WM_CONCAT_IMPL;
  2. create public synonym wm_concat for wmsys.wm_concat;
  3. grant execute on WM_CONCAT_IMPL to public;
  4. grant execute on wm_concat to public;

Q:oracle19c 如何重建vm_concat函数的更多相关文章

  1. BZOJ 4815 [Cqoi2017]小Q的表格 ——欧拉函数

    把式子化简一波. 发现一个比较厉害的性质:每个点只能影响到行列下标$gcd$与它相同的点. 然后就可以计算$\sum_{g<=k}f(g,g)*\sum_{i<=k}\sum_{j< ...

  2. BZOJ 4815 CQOI2017 小Q的表格 欧拉函数+分块

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4815 题意概述:要认真概述的话这个题就出来了... 分析: 首先分析题目,认真研究一下修 ...

  3. 【转】Django之Model层的F对象,Q对象以及聚合函数

    转自:https://blog.csdn.net/wsy_666/article/details/86692050 一.F对象: 作用:用于处理类属性(即model的某个列数据),类属性之间的比较.使 ...

  4. R语言:常用函数【转】

    数据结构 一.数据管理vector:向量 numeric:数值型向量 logical:逻辑型向量 character:字符型向量list:列表 data.frame:数据框 c:连接为向量或列表len ...

  5. angularJS中的Promise对象($q)的深入理解

    原文链接:a better way to learn AngularJS - promises AngularJS通过内置的$q服务提供Promise编程模式.通过将异步函数注册到promise对象, ...

  6. go 函数

    GO 程序设计   函数 1.新的数据类型 mytype 用户可以根据自身需要定义新的数据类型,下面的mytype就是新定义的数据类型,其中第二个是一个结构体,结构体在go语言中是非常有用的数据类型, ...

  7. 剑指offer面试题6 重建二叉树(c)

  8. Django运算表达式与Q对象/F对象

    Django运算表达式与Q对象/F对象 1 模型查询 概述: 1 查询集:表示从数据库中获取的对象的集合 2 查询集可以有多个过滤器,通过 逻辑运算符连接 3 过滤器就是一个函数,基于所给的参数限制查 ...

  9. Oracle列转行函数使用

    一.业务场景 今天需要实现一个table,有一列的效果是:用户姓名A(账号a),用户姓名B(账号b)...这种格式.这就想到oracle的列转行函数vm_concat. 可以用类似这种格式wm_con ...

  10. VBScript常用函数

    VBScript常用函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 1.Abs函数 Option Explicit '@author :yinzhengjie 'blog:ht ...

随机推荐

  1. mysql索引 数据库优化

    1.mysql索引结构b+树 a.首先要说二叉树,二叉查找树,数的结构不用多说,二叉查找树,大概就是几个原则,左边比右边的小,然后保持一个分布均匀,也就是树的高度尽量最小. b.b-树,b-树和二叉查 ...

  2. .Net Core 中使用NLog替代默认日志

    1.添加引用nlog.config和Nlog.Web.AspNetCore 2.配置NLog 配置文件 添加一个Web配置文件xxxx.Config <?xml version="1. ...

  3. pgsql 自定义函数

    CREATE OR REPLACE FUNCTION test1(id INTEGER,id1 INTEGER) RETURNS INTEGER LANGUAGE plpgsql AS $$ decl ...

  4. 由浅入深学习SAP财务 - 高林旭 PDF 版本

    由浅入深学习SAP财务 - 高林旭  PDF 版本 有需要的联系 wx :erpworld

  5. 点击dgv某列的单元格时触发事件的方法

    private void DataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.Colu ...

  6. 【C学习笔记】day2-5 求两个数的最大公约数

    #include <stdio.h> int main() { int a, b; int min; scanf_s("%d %d", &a, &b); ...

  7. 当FTP不能满足大文件、海量文件传输时,有没有好的替代方案?

    很多企业存在大文件.海量文件的传输需求,如涉及到图像数据采集和回传.海量用户数据收集和同步等业务,一般情况,企业还是会采用传统的FTP传输,或者以此为基础,使用脚本或结合其他办公工具来解决传输需求. ...

  8. 树莓派4B安装Gogs

    https://www.labno3.com/2021/01/28/how-to-install-gogs-on-the-raspberry-pi/ https://gogs.io/docs/inst ...

  9. host头攻击

    一.问题源起 HTTP1.1规范中在增加了HOST头信息,用于存储服务端与客户端的路由信息. 例如: Request的Header里就有一个标名请求,它是用来记录服务端网站域名的. 如果前端或者后台正 ...

  10. HCIP-ICT实战进阶02-OSPF特殊区域及其他特性

    HCIP-ICT实战进阶02-OSPF特殊区域及其他特性 1 ospf区域 如果ospf只有单个区域, 会有什么问题? 如果只有当个区域, 该区域设备数量如果比较多, 对应一类LSA数量可能较少, 但 ...