oracle 行转列数据量太大报错

2024-06-23 11:32
文章标签 数据量 报错 oracle 转列

本文主要是介绍oracle 行转列数据量太大报错,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

wmsys.wm_concat  这个函数存在缺陷,数据量大的时候,容易报ora-22813

    没办法只能通过重新定义一个行转列函数,copy了一下 http://www.savedba.com/?p=955  这个人写的函数

有点问题,自己又改了下。

drop type t_dj_concat;
drop function dj_concat;


create or replace type t_dj_concat  as object
(
  curr_str clob,
  static function odciaggregateinitialize(sctx in out t_dj_concat)
    return number,
  member function odciaggregateiterate(self in out t_dj_concat,
                                       p1   in varchar2) return number,
  member function odciaggregateterminate(self        in t_dj_concat,
                                         returnvalue out clob,
                                         flags       in number)
    return number,
  member function odciaggregatemerge(self  in out t_dj_concat,
                                     sctx2 in t_dj_concat) return number
);
/




create or replace type body t_dj_concat
is
  static function odciaggregateinitialize(sctx in out t_dj_concat)
  return number
  is
  begin
  sctx := t_dj_concat(null) ;
  return odciconst.success;
  end;
  member function odciaggregateiterate(self in out t_dj_concat,


  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 t_dj_concat,
  returnvalue out clob,
  flags in number)
  return number
  is
  begin
  returnvalue := curr_str ;
  return odciconst.success;
  end;
  member function odciaggregatemerge(self in out t_dj_concat,
  sctx2 in t_dj_concat)
  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 dj_concat(p1 varchar2)
return clob aggregate using t_dj_concat ;
/


然后测试完美解决

 sb.append(" select  rptcode,infcode,rowcode,colcode,nullable,infname,dj_concat(infvalue) as infvalue  from  CCISDIC    group ");
       sb.append(" by rptcode,infcode,rowcode,colcode,nullable,infname ");
       return this.getJdbcService().findForList(sb.toString(),new Object[]{});

 String value=map.get("infvalue").toString();

这篇关于oracle 行转列数据量太大报错的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1087029

相关文章

yum install 失败报错`XZ_5.1.2alpha' not found (required by /lib64/librpmio.so.3)

/export/env/py3.6/lib/liblzma.so.5: version `XZ_5.1.2alpha' not found (required by /lib64/librpmio.so.3)   到/export/env/py3.6/lib cp /lib64/liblzma.so.5.2.2 . sudo ln -s -f liblzma.so.5.2.2 liblzm

BD错误集锦6——【IDEA报错】tomcat server功能无效,报错Java EE: EJB, JPA, Servlets

在网上查找原因,发现是非法关闭IDEA导致的。 Open Settings | Plugns and enable it. 在设置中enable JAVA EE和tomcat server即可。 参考: https://stackoverflow.com/questions/43607642/intellij-idea-plugin-errorproblems-found-loadin

ORACLE 、达梦 数据库查询指定库指定表的索引信息

在Oracle数据库中,索引是一种关键的性能优化工具,通过它可以加快数据检索速度。在本文中,我们将深入探讨如何详细查询指定表的索引信息,以及如何利用系统视图和SQL查询来获取这些信息。 索引在数据库中的重要性 索引是一种数据结构,用于加快数据库表中数据的检索速度。它类似于书籍的目录,可以帮助数据库引擎快速定位数据行,特别是在大型数据集合下,其作用尤为显著。 查询指定表的索引信息 在Orac

关于文章“python+百度语音识别+星火大模型+讯飞语音合成的语音助手”报错的修改

前言 关于我的文章:python+百度语音识别+星火大模型+讯飞语音合成的语音助手,运行不起来的问题 文章地址: https://blog.csdn.net/Phillip_xian/article/details/138195725?spm=1001.2014.3001.5501 1.报错问题 如果运行中报错,且报错位置在Xufi_Voice.py文件中的pcm_2_wav,如下图所示

pom.xml第一行报错

错误信息:org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject,org.apache.maven.archiver.MavenArchiveConfiguration)  解决办法:  Help–>Install From Site Connectivity(instal

oracle数据导出txt及导入txt

oracle数据导出txt及导入txt ORACLE数据导出TXT及从TXT导入: 导出到TXT文件: 1、用PL/SQL DEV打开CMD窗口。 2、spool d:/output.txt; 3、set heading off; --去掉表头 4、select * from usergroup; 5、spool off; www.2ct

Linux开机自动启动ORACLE设置

Redhat init简介: Linux启动时,会运行一个init程序,然后由init来启动后面的任务,包括多用户环境(inittab中设定)和网络等。运行级就是当前程序运行的功能级别,这个级别从1到6,具有不同的功能。这些级别在/etc/inittab(其他发行版这个文件位置不同)中指定,该文件就是init程序寻找的主要文件。最先运行的服务放在/etc/rc.d目录下。

red hat enterprise 下完全删除oracle 数据库

步骤 1     以 oracle 用户登录主、备节点。 步骤 2     关闭 数据库 监听。 > lsnrctl stop 步骤 3     关闭数据库 实例 。 > sqlplus '/as sysdba' > shutdown immediate 步骤 4     以root用户登录数据库 服务器 。 步骤 5     删除Oracle用户。 # userdel -r or

如何查看和修改Oracle数据库服务器端的字符集

Oracle数据库查看和修改服务器端的字符集的方法是本文主要要介绍的内容,接下来救让我们一起来了解一下这部分内容。 A、oracle server 端字符集查询 select userenv(‘language’) from dual 其中NLS_CHARACTERSET 为server端字符集 NLS_LANGUAGE 为 server端字符显示形式 B、查询oracle

github 报错 git fatal: unable to write new index file

错误一:git fatal: unable to write new index file主要原因就是服务器磁盘空间不够导致的,增加服务器空间就OK了在百度上面搜索没得到什么有效信息,在gooogle上搜索得到很多有效信息 Finding large directories with something like the following helped clean up some log fi