在工作中遇到行转列的问题
来源:互联网 发布:网络监控系统主要功能 编辑:程序博客网 时间:2024/04/30 06:27
今天在做查询时使用了WMSYS.WM_CONCAT函数,但是进行几次外连接后就报错ora-22922 CLOB错误。
主要是使用WMSYS.WM_CONCAT函数,它默认返回值是CLOB类型的,再次和其他表进行连接时就会报CLOB的错误。
从网上自己找了一个行专列的函数,是这样的:
1. CREATE OR REPLACE TYPE ZH_CONCAT_IM
AUTHID CURRENT_USER AS OBJECT
(
CURR_STR VARCHAR2(32767),
STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT ZH_CONCAT_IM) RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT ZH_CONCAT_IM,
P1 IN VARCHAR2) RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN ZH_CONCAT_IM,
RETURNVALUE OUT VARCHAR2,
FLAGS IN NUMBER)
RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT ZH_CONCAT_IM,
SCTX2 IN ZH_CONCAT_IM) RETURN NUMBER
);
2. CREATE OR REPLACE TYPE BODY ZH_CONCAT_IM
IS
STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT ZH_CONCAT_IM)
RETURN NUMBER
IS
BEGIN
SCTX := ZH_CONCAT_IM(NULL) ;
RETURN ODCICONST.SUCCESS;
END;
MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT ZH_CONCAT_IM,
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 ZH_CONCAT_IM,
RETURNVALUE OUT VARCHAR2,
FLAGS IN NUMBER)
RETURN NUMBER
IS
BEGIN
RETURNVALUE := CURR_STR ;
RETURN ODCICONST.SUCCESS;
END;
MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT ZH_CONCAT_IM,
SCTX2 IN ZH_CONCAT_IM)
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;
3.
CREATE OR REPLACE FUNCTION ZH_CONCAT(P1 VARCHAR2)
RETURN VARCHAR2 AGGREGATE USING ZH_CONCAT_IM ;
- 在工作中遇到行转列的问题
- 我在工作中遇到的web问题汇总
- 随笔,在工作中遇到的问题(杂)
- 我在工作中遇到的JS问题汇总
- 我在工作中遇到的css问题汇总
- 一个菜鸟在工作中遇到的奇葩问题。。。。
- 今天在工作中遇到的一个问题
- 分享一个在工作中遇到的一个问题的解决方案
- 在工作中使用block遇到一些问题和新的认识
- 在工作中第一次编写遇到的shell问题总结
- 在工作中遇到的两个难题
- 在工作中碰到的问题
- 程序员在工作中遇到最郁闷的事情
- f在工作中遇到的一些问题及总结(f的第一篇博客)
- 关于在工作中遇到没处理过的问题,如何寻找解决方案
- 入职了,以前的博客也不见了,今天开始新开一帖,记录在工作中遇到的问题与技术上的分享
- 在工作中遇到的一些没掌握的css用法
- 设计模式详解和我在工作中遇到的例子
- qtcreator中常用快捷键总结
- Ring3与Ring0通信方法若干
- v$sql和v$sqlarea视图
- Set up tftp on Fedora
- Blind XPath Injection
- 在工作中遇到行转列的问题
- 配置 Profile Manager(1)
- Ajax、Jquery、Json简介
- c++初学者(首先请大神解释个问题,不大明白)
- vlc-android 获取MediaPlayerEncounteredError,MediaPlayerBuffering等各种事件的响应
- 取字符串长度
- xmpp即时通讯之接收消息提示声音+震动
- JS中如何使用split用法和如何删除数组中的元素
- 梦在远方,而你在心上