在12C上创建wm_concat函数
11gr2和12C上已经摒弃了wm_concat函数,当时我们很多程序员在程序中确使用了该函数,导致程序出现错误,为了减轻程序员修改程序的工作量,只有通过手工创建个wm_concat函数,来临时解决该问题,但是注意,及时创建了该函数,在使用的过程中,也需要用to_char(wm_concat())方式,才能完全替代之前的应用。
一.解锁wmsys用户
二.创建包、包体和函数
- CREATE OR REPLACE TYPE WM_CONCAT_IMPL AS OBJECT
- -- AUTHID CURRENT_USER 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 ;
- /
三.创建同义词并授权
在12C上创建wm_concat函数的更多相关文章
- Oracle创建WM_CONCAT函数
Oracle创建WM_CONCAT函数 WM_CONCAT这个函数会出错,所以从 11g开始.官方不认可 WM_CONCAT.然后就没这个函数了, 下面就是创建WM_CONCAT这个函数的步骤 第一步 ...
- python小练习,打出1-100之间的所有偶数,设计一个函数,在桌面上创建10个文件,并以数字命名,复利计算函数
练习一:打出1-100之间的所有偶数 def even_print(): for i in range(1,101): if i % 2 == 0: print (i) even_print() #列 ...
- 如果是在有master上开启了该参数,记得在slave端也要开启这个参数(salve需要stop后再重新start),否则在master上创建函数会导致replaction中断。
如果是在有master上开启了该参数,记得在slave端也要开启这个参数(salve需要stop后再重新start),否则在master上创建函数会导致replaction中断.
- python小练习1:设计这样一个函数,在桌面的文件夹上创建10个文本,以数字给它们命名。
python小练习1:设计这样一个函数,在桌面的文件夹上创建10个文本,以数字给它们命名. 使用for循环即可实现: for name in range(1,11): desktop_path='C: ...
- Oracle 12C -- 在相同的列的集合上创建多个索引
在12C中,可以在相同的列的集合上创建多个索引,但是多个索引的类型要不同.同一时刻,只有一个是可见的. SQL> create table emp_tab as select * from em ...
- 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用
由于ASP.NET Web API具有与ASP.NET MVC类似的编程方式,再加上目前市面上专门介绍ASP.NET Web API 的书籍少之又少(我们看到的相关内容往往是某本介绍ASP.NET M ...
- 重写Oracle的wm_concat函数,自定义分隔符、排序
oracle中,wm_concat函数是一个聚合函数,和mysql中的group_concat函数类似,不过group_concat函数比较强大,可以定义分隔符和排序,当然所谓强大是相对的,这里假使我 ...
- 在 Mac OS X 上创建的 .NET 命令行程序访问数据库 (使用Entity Framework 7 )
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- MySQL基于实例sales创建自定义函数、视图、存储过程及触发器
实例:数据库sales 1.客户表(Customer) 客户编号(CusNo) 姓名(CusName) 地址(Address) 电话(Tel) C001 杨婷 北京 010-5328953 C002 ...
随机推荐
- linux 分区、目录及用途
主要分区: 目录 建议大小 格式 描述 / 10G-20G ext4 根目录 swap <2048M swap 交换空间 /boot 200M左右 ext4 Linux的内核及引导系统程序所需要 ...
- 【codevs1004】四子连棋 状压bfs
题目大意:给定一个大小为 4*4 的棋盘,分别有 7 个黑子.7 个白子和 2 个空位构成,求出至少需要移动多少步,才能使得四个相同的棋子共线. 题解:显然每一种棋盘的局面都是一个状态,因此需要采用状 ...
- <? extends T>和<? super T>的理解
背景:对泛型中使用super和extends关键字进行分析总结. 问题: public class TestExtend { public static void main(String[] args ...
- 多个 ng-app 中 Controllers & Services 之间的通信
原文发布在个人独立博客上,链接:http://pengisgood.github.io/2016/01/31/communication-between-multiple-angular-apps/ ...
- 九、java容器
目录 一.容器的概念 二.Cpllection接口 三.Iterator接口 四.增强的for循环 五.Set接口 六.List接口和Comparable接口 八.Map接口 九.自动打包/解包 十. ...
- MUI 底部弹出的选择框
大致是这样: 第一种方法:这种方法是使用5+的nativeUI原生动画 1)引入:mui.css或者mui.min.css mui.js或者mui.min.js也行 mui.picker.min.js ...
- CodeForces892E 可撤销并查集/最小生成树
http://codeforces.com/problemset/problem/892/E 题意:给出一个 n 个点 m 条边的无向图,每条边有边权,共 Q 次询问,每次给出 ki 条边,问这些边 ...
- AtomicInteger和count++的比较
J2SE 5.0提供了一组atomic class来帮助我们简化同步处理.基本工作原理是使用了同步synchronized的方法实现了对一个long, integer, 对象的增.减.赋值(更新)操作 ...
- python爬虫 前程无忧网页抓取
Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...
- Unity NavMesh导航网格 初级教程
目的:要实现的功能就是你点击一下地图上的某个地方,人物就向着那个点移动.有点自动寻路的味道. 例子:三国群英传,三国赵云传之类的游戏里面的人物移动就可以用这个实现.还有一个我不太喜欢玩的游戏英雄联盟 ...