--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
/

最新文章

  1. 读书笔记:JavaScript DOM 编程艺术(第二版)
  2. Win7 64位下PowerDesigner连接64位Oracle11g数据库
  3. 配合crond服务实现自定义周期备份MySQL数据库(使用innobackupex进行备份)
  4. ASP.NET保存信息总结(Application、Session、Cookie、ViewState和Cache等) ZT
  5. Linux-小命令技巧
  6. Linux 中的grep命令单引号,不加任何参数以及双引号的作用
  7. URLEncode与URLDecode总结与实现
  8. C++ 安全字符串拼接
  9. jQuery 中 children() 与 find() 用法的区别
  10. 图标的使用————JAVA——Swing
  11. 利用Meida Service的Java SDK来调用Azure Media Services的Index V2实现视频字幕自动识别
  12. jsp自定义标签分析
  13. java内存模型 年轻代/年老代 持久区
  14. windows server 2003 系统重装蓝屏
  15. js事件的相关收集
  16. 代码审计之XiaoCms(后台任意文件上传至getshell,任意目录删除,会话固定漏洞)
  17. s2-045漏洞批量检测工具
  18. 使用Socket通信--测试叫号
  19. Mybatis if 判断等于一个字符串
  20. WDCP面板V3新版本安装与体验记录

热门文章

  1. 源代码管理SVN的使用
  2. JavaScript——class与原型对象
  3. Asp.Net 设计模式 之 “工厂方法”即利用 接口 实现的抽象工厂
  4. Java入门第38课——猜字母游戏之设计程序结构
  5. java.lang.IllegalArgumentException: Result Maps collection already contains value for com.zhmy.businessapi.mapper.CompanyMapper.BaseResultMap
  6. hdfs深入:10、hdfs的javaAPI操作
  7. Python:socket实现ftp程序
  8. linux 命令终端提示符显示-bash-4.2#解决方法
  9. MySQL-----改
  10. C语言学习3