解决WMSYS.WM_CONCAT在12c无法使用的问题

在从Oracle 11g升级到12c时,发现WMSYS.WM_CONCAT函数不再可用。由于大量代码依赖此函数,直接修改不现实。本文介绍了如何通过创建新的PLSQL函数来替代WM_CONCAT,包括创建WMSYS用户、授权、定义TYPE和FUNCTION,并测试其在12c中的功能,确保移植性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:生产库用的是Oracle 11g,开发用的是Oracle 12c,存在差异,需要解决下部分函数(WMSYS.WM_CONCAT)在11g可以使用,但12c不能使用的情况

关于WM_CONCAT函数在官方文档里明确表示,最好不用wm_concat, 如下图,使用了移植性将无法保证
在这里插入图片描述

但当工程里已经有大量的此类函数使用时,修改代码不现实的情况下就需要保留此函数,另谋他法。

一、使用PLSQL连接开发环境数据库

二、创建WMSYS用户,并为其授权

-- 创建用户
CREATE USER WMSYS IDENTIFIED BY WMSYS123456 DEFAULT TABLESPACE isc;

--授权用户
GRANT CONNECT,RESOURCE TO WMSYS;

在这里插入图片描述

三、以该用户角色登录数据库

--以新建用户Login
conn WMSYS/WMSYS123456

四、创建TYPE、FUNCTION

-- 创建类型
CREATE OR REPLACE TYPE wm_concat_impl   
  AUTHID CURRENT_USER
AS OBJECT (
   curr_str   VARCHAR2 (32767),
   STATIC FUNCTION odciaggregateinitialize (sctx 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值