度量快速开发平台-业界最好的全功能软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 469|回复: 0

[分享] oracle 11.1之前wm_concat超过4000错误的解决办法

[复制链接]

197

主题

1307

帖子

3536

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3536
发表于 2017-9-29 11:42:47 | 显示全部楼层 |阅读模式
oracle中。用到 wm_concat函数的时候,如果汇总的数据超过4000个汉字,则要报错误:
wmsys.wm_concat.jpg
这是在11.2之前这个函数返回的string.

如果有这种错误,可以自己写一个函数,返回clob的方式来实现超过4000个字符的。

创建type:
create or replace type str2tblType as table of varchar2(4000);


创建函数:
CREATE OR REPLACE FUNCTION tab2clob(p_str2tbltype str2tbltype,
                      p_delim       IN VARCHAR2 DEFAULT ',') RETURN CLOB IS
                      l_result CLOB;
    BEGIN
       FOR cc IN (SELECT column_value
                  FROM TABLE(p_str2tbltype)
               ORDER BY column_value) LOOP
      l_result := l_result || p_delim || cc.column_value;
     END LOOP;
     RETURN ltrim(l_result, p_delim);
   END;

   调用函数效果:
   select tab2clob(CAST(COLLECT(tm) AS str2tbltype)) from table

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2018-6-25 09:51 , Processed in 0.326999 second(s), 33 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表