11gr2和12C上已经摒弃了wm_concat函数,当时我们很多程序员在程序中确使用了该函数,导致程序出现错误,为了减轻程序员修改程序的工作量,只有通过手工创建个wm_concat函数,来临时解决该问题,但是注意,及时创建了该函数,在使用的过程中,也需要用to_char(wm_concat())方式,才能完全替代之前的应用。

一.解锁wmsys用户

alter user wmsys account unlock;

二.创建包、包体和函数

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

);

/

上边不知道反证我们自己用的是下边那个:

CREATE OR REPLACE TYPE WMSYS.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 ;

/

三.创建同义词并授权

create public synonym WM_CONCAT_IMPL for wmsys.WM_CONCAT_IMPL

/

create public synonym wm_concat for wmsys.wm_concat

/

grant execute on WM_CONCAT_IMPL to public

/

grant execute on wm_concat to public

/

oracle 12c 行转列函数,oracle12cwm_concat函数人工写行转列函数相关推荐

  1. 课后习题5.13 编写一程序,将两个字符串连接起来,结果取代第一个字符串。 (1)用字符数组,不用stract函数(即自己写一个具有stract函数功能的函数); (2)用标准库中的stract函数;

    课后习题5.13 编写一程序,将两个字符串连接起来,结果取代第一个字符串. (1)用字符数组,不用stract函数(即自己写一个具有stract函数功能的函数): (2)用标准库中的stract函数: ...

  2. oracle 12c to_char 函数(1) 日期-字符串

    oracle 12c to_char 函数 日期-字符串 TO_CHAR 函数,数据转换为文字形式,如下图 TO_CHAR() 日期型到字符型 作用 to_char 中的参数为日期,可以将日期转为特定 ...

  3. pandas使用np.where函数计算返回dataframe中指定数据列包含缺失值的行索引列表list

    pandas使用np.where函数计算返回dataframe中指定数据列包含缺失值的行索引列表list(index of rows with missing values in dataframe ...

  4. pandas使用idxmax函数获取dataframe每个数据行中最大值对应的列名称(column label of max value in each row in dataframe)

    pandas使用idxmax函数获取dataframe每个数据行中最大值对应的列名称(column label of max value in each row in dataframe) 目录

  5. pandas使用query函数删除dataframe中两个数据列加和小于某一特定值的数据行(removing rows based on multiple dataframe column value

    pandas使用query函数删除dataframe中两个数据列加和小于某一特定值的数据行(removing rows based on multiple dataframe column value ...

  6. pandas使用idxmin函数获取dataframe每个数据行中最小值对应的列名称(column label of min value in each row in dataframe)

    pandas使用idxmin函数获取dataframe每个数据行中最小值对应的列名称(column label of min value in each row in dataframe) 目录

  7. pandas使用drop_duplicates函数基于subset参数指定的数据列子集删除重复行、并设置keep参数保留重复行中的最后一个数据行

    pandas使用drop_duplicates函数基于subset参数指定的数据列子集删除重复行.并设置keep参数保留重复行中的最后一个数据行 目录

  8. pandas使用groupby函数和count函数返回的是分组下每一列的统计值(不统计NaN缺失值)、如果多于一列返回dataframe、size函数返回分组下的行数结果为Series(缺失值不敏感)

    pandas使用groupby函数和count函数返回的是分组下每一列的统计值(不统计NaN缺失值).如果多于一列返回dataframe.size函数返回分组下的行数结果为Series(不区分缺失值和 ...

  9. R语言dplyr包使用bind_rows函数纵向合并两个dataframe(行生长)、使用bind_cols函数横向合并两个dataframe(列生长)

    R语言dplyr包使用bind_rows函数纵向合并两个dataframe(行生长).使用bind_cols函数横向合并两个dataframe(列生长) 目录

  10. R语言colSums函数、rowSums函数、colMeans函数、rowMeans函数、colMedians函数、rowMedians计算dataframe行或者列的加和、均值、中位数实战

    R语言colSums函数.rowSums函数.colMeans函数.rowMeans函数.colMedians函数.rowMedians计算dataframe行或者列的加和.均值.中位数实战 目录

最新文章

  1. java中怎么剪切文件_java中实现文件复制、剪切和删除
  2. python调试器入门教程_PyCharm入门第一步(二)——调试第一个Python应用|python基础教程|python入门|python教程...
  3. java ee自学路线
  4. 三个小白是如何在三个月内搭一个基于kaldi的嵌入式在线语音识别系统的
  5. 《图解HTTP》— 安全的HTTPS
  6. 2020上海大学生网络安全赛MISC可乐加冰
  7. 盘点2020年受影响最大的十大行业和10大职业
  8. 弘辽科技:淘宝直通车推广无展现?该从何入手?
  9. 火柴人小程序linux,推荐这3款射击类的火柴人小程序,一起冲冲冲吧!
  10. Book Sharing
  11. 微信小程序数据添加到云数据库中
  12. 详解Windows PE(Windows预安装环境)
  13. Python设计模式之模版模式(16)
  14. 标准解读系列之三:智慧高速建设需要什么样的技术架构?
  15. 央企建筑公司数字化转型怎么做
  16. 原定7月30日上线的《暗黑破坏神:不朽》又又又”跳票“了,突发上线,如何在电脑上畅玩?
  17. 科学,宗教和信仰,以及神
  18. android here地图,兼容所有安卓设备 Here地图已放开限制
  19. 世界第一位计算机程序员传奇一生
  20. RemotelyAnywhere安装使用指南

热门文章

  1. 【正点原子STM32连载】第三十七章 触摸屏实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
  2. 菜刀之中国蚁剑-安装使用及下载地址
  3. 小米蓝牙音响驱动_小米手机绝佳配件,20W无线闪充,支持唤醒小爱,只卖149
  4. g4600黑苹果efi_如何找到自己电脑合适的efi引导文件替换u盘的efi
  5. Linux面试题(34道)
  6. SQL数据库修复/数据库置疑修复
  7. html5+前端脸部识别采集,前端人脸识别框架Tracking.js
  8. 推荐给大家一个恶搞代码,让你的好友电脑关机----关机代码
  9. 苹果计算机 win10,苹果电脑怎么安装Win10系统?
  10. Matplotlib可视化数据分析图表下(常用图表的绘制、折线图、柱形图、直方图、饼形图、散点图、面积图、热力图、箱形图、3D图表、绘制多个图表、双y轴可视化图表、颜色渐变图)