度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 3128|回复: 0
打印 上一主题 下一主题

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

[复制链接]

198

主题

1313

帖子

3784

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3784
跳转到指定楼层
楼主
发表于 2020-7-28 11:42:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
oracle中。用到 wm_concat函数的时候,如果汇总的数据超过4000个汉字,则要报错误:

这是在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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 10:04 , Processed in 0.117113 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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