转:http://bbs.csdn.net/topics/360059765

使用wmsys.wm_concat多列合成一列遇到问题
ORA-22813: 操作数值超出系统的限制

官方文档解释是总长度超过30k
有办法修改这个长度限制么?

已经写了存储过程作为替代方案了

  1. CREATE OR REPLACE TYPE zh_concat_im
  2. AUTHID CURRENT_USER AS OBJECT
  3. (
  4. CURR_STR clob,
  5. STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT zh_concat_im) RETURN NUMBER,
  6. MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT zh_concat_im,
  7. P1 IN VARCHAR2) RETURN NUMBER,
  8. MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN zh_concat_im,
  9. RETURNVALUE OUT clob,
  10. FLAGS IN NUMBER)
  11. RETURN NUMBER,
  12. MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT zh_concat_im,
  13. SCTX2 IN zh_concat_im) RETURN NUMBER
  14. );
  15.  
  16. CREATE OR REPLACE TYPE BODY zh_concat_im
  17. IS
  18. STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT zh_concat_im)
  19. RETURN NUMBER
  20. IS
  21. BEGIN
  22. SCTX := zh_concat_im(NULL) ;
  23. RETURN ODCICONST.SUCCESS;
  24. END;
  25. MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT zh_concat_im,
  26.  
  27. P1 IN VARCHAR2)
  28. RETURN NUMBER
  29. IS
  30. BEGIN
  31. IF(CURR_STR IS NOT NULL) THEN
  32. CURR_STR := CURR_STR || ',' || P1;
  33. ELSE
  34. CURR_STR := P1;
  35. END IF;
  36. RETURN ODCICONST.SUCCESS;
  37. END;
  38. MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN zh_concat_im,
  39. RETURNVALUE OUT clob,
  40. FLAGS IN NUMBER)
  41. RETURN NUMBER
  42. IS
  43. BEGIN
  44. RETURNVALUE := CURR_STR ;
  45. RETURN ODCICONST.SUCCESS;
  46. END;
  47. MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT zh_concat_im,
  48. SCTX2 IN zh_concat_im)
  49. RETURN NUMBER
  50. IS
  51. BEGIN
  52. IF(SCTX2.CURR_STR IS NOT NULL) THEN
  53. SELF.CURR_STR := SELF.CURR_STR || ',' || SCTX2.CURR_STR ;
  54. END IF;
  55. RETURN ODCICONST.SUCCESS;
  56. END;
  57. END;
  58.  
  59. create or replace FUNCTION zh_concat(P1 VARCHAR2)
  60. RETURN clob AGGREGATE USING zh_concat_im ;

wmsys.wm_concat结果长度限制的问题的更多相关文章

  1. Oracle 行拼接 wmsys.wm_concat扩展

    将多行数据拼接成一行: --wmsys.wm_concat group by a.flowid; 但有大小限制:字符串缓冲区太小,超过varchar 4000长度.扩展:更改返回类型为clob --T ...

  2. Oracle 中wmsys.wm_concat拼接字符串,结果过长报错解决

    备忘:这个函数最大是4000,根据拼接列的长度,通过限制拼接条数来防止拼接字符串过长错误 --这个情况是从子表中读取出具,这里直接把它当做查询字段处理,在子表中有所有数据 select info.id ...

  3. oracle 函数 WMSYS.WM_CONCAT 与对应 mysql 函数GROUP_CONCAT的用法

    1.oracle函数 WMSYS.WM_CONCAT的使用 如图,将图1的结果变成图2的结果,使用函数 WMSYS.WM_CONCAT 即可. 查询语句需要配合使用group by select aa ...

  4. [转]Oracle 分组聚合二种写法,listagg和wmsys.wm_concat

    本文转自:http://www.cnblogs.com/ycdx2001/p/3502495.html with temp as( select 'China' nation ,'Guangzhou' ...

  5. Oracle之多行记录变一行记录,行变列,并排序(wmsys.wm_concat)

    原帖:http://www.cnblogs.com/nayitian/p/3231734.html wmsys.wm_concat Definition: The Oracle PL/SQL WM_C ...

  6. WMSYS.WM_CONCAT(distinct(字段名)) 函数,字符串拼接函数。合并列

    合并列函数 WMSYS.WM_CONCAT(distinct(字段名)) 函数 可以实现字符串拼接在一起,这种情况可以在要求把一个字段的多个值拼接在一起的时候使用.其中distinct可以去掉重复的值 ...

  7. WMSYS.WM_CONCAT 函數的用法

    select t.rank, t.Name from t_menu_item t; 10 CLARK    10 KING    10 MILLER    20 ADAMS    20 FORD    ...

  8. Oracle数据库合并行记录,WMSYS.WM_CONCAT 函數的用法

    Sql代码 select t.rank, t.Name from t_menu_item t; 10 CLARK    10 KING    10 MILLER    20 ADAMS    20 F ...

  9. Oracle 分组聚合二种写法,listagg和wmsys.wm_concat

    with temp as( select 'China' nation ,'Guangzhou' city from dual union all select 'China' nation ,'Sh ...

随机推荐

  1. linux rinetd 端口转发部署

    linux下简单好用的工具rinetd,实现端口映射/转发/重定向 Rinetd是为在一个Unix和Linux操作系统中为重定向传输控制协议(TCP)连接的一个工具.Rinetd是单一过程的服务器,它 ...

  2. 制作U盘启动安装CentOS Linux系统

    制作U盘启动安装CentOS Linux系统 (特为老男孩教育&&51CTO学院在线三期同学而发) 方法一:使用UltraISO,将u盘做成启动盘 文件-->打开-->选择 ...

  3. NHibernate Isession管理

    一个Session foreach (var item in favoriteId) { if (!string.IsNullOrEmpty(item)) { var favorite = _sess ...

  4. 利用POST重启路由器,一直无法实现,求帮助

    本帖最后由 xinaini1986 于 2014-10-20 13:03 编辑 因为路由器经常会无法上网,重启一下路由器就可以,但每次都登陆路由器管理重启路由器很麻烦,所以想通过按键精灵POST方式重 ...

  5. MathType输入框怎么调整

    在用MathType编辑公式编辑器时,除了可以对MathType工具栏的显示比例进行调整以外,还可以对编辑时的输入框进行调整.这样在编辑的过程中,工具栏可以看得很清楚,同时框输入框也可以看得很清楚,这 ...

  6. 如何破解银行O2O模式创新

    文/赵志宏 摩 根大通的买房APP,使客户可根据自己的位置选择合适的贷款经理:华道数据提供的卡惠APP,使客户可随时查询自己周围信用卡刷卡打折的商户信息:民生银 行的微信预约叫号功能,使客户根据可自己 ...

  7. PHP日期知识

    (1)date用法: date(格式,[时间]);如果没有时间参数,则使用当前时间. 格式是一个字符串,其中以下字符有特殊意义:U 替换成从一个起始时间(好象是1970年1月1日)以来的秒数 Y 替换 ...

  8. ubuntu alsa

    今天要在linux下搞音频编程,在网上查阅了一下资料,网上很多资料都是在linux下直接对/dev/dsp进行编程的,因为在以往的linux系统中,我们是可以通过cat  xxx.wav /dev/d ...

  9. 【转】WCF OpenTimeout, CloseTimeout, SendTimeout, ReceiveTimeout

    关于这四个属性,在MSDN中的解释有点敷衍了事.Open/Close/Receive/Send本是HTTP/TCP/SOCKET的概念,Read/Write Operation则是Web Servic ...

  10. MVC5 Entity Framework学习之实现主要的CRUD功能

    在上一篇文章中,我们使用Entity Framework 和SQL Server LocalDB创建了一个MVC应用程序,并使用它来存储和显示数据.在这篇文章中,你将对由 MVC框架自己主动创建的CR ...