`
dacoolbaby
  • 浏览: 1256114 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Oracle集合类

阅读更多

首先,简单描述一下今天使用DBMS_OUTPUT.PUTLINE();的问题。

这个output只能支持1000 bytes的数据量。

如果超过这个数据量,就会报ORU-10027 buffer overflow,limit of 10000 bytes错误 。

 

如果你真的需要输出那么多的数据,请使用:

   set serveroutput on size 100000

我们在使用Java或者其他高级语言的时候,常常会用到一个东西,叫做数组。

而在Oracle数据库的存储过程和函数中,是无法使用DDL语句,也就是无法自由使用临时表,保存暂存数据。

 

但是,在Oracle有个很好的解决方案:

type xxx is table of xxx index by binary_integer

 

示例:

create or replace procedure sp_tes2
as
    type t_serv_tbl is table of itmis_pri_serv_tbl%rowtype index by binary_integer;
    v_servs t_serv_tbl ;
begin

  begin  
      SELECT * BULK COLLECT INTO v_servs FROM itmis_pri_serv_tbl where year=2013
            ; 
  for i in 1..v_servs.count  
  loop   
    dbms_output.put_line(v_servs(i).serv_id || '---' || v_servs(i).serv_name);   
  end loop;   
  end;
  
    close cur_calling;
          
end;	

 

这里需要注意2点:

1. 在declare部分,要先声明一个TYPE。

2. 在使用这个TYPE之前,需要将其实例化,如上面的 v_servs t_serv_tbl

 

在这里我们使用了一个BULK COLLECT 这个语句。稍微介绍一下:

通过bulk collect减少loop处理的开销。
采用bulk collect可以将查询结果一次性地加载到collections中。
而不是通过cursor一条一条地处理。

BULK COLLECT只支持集合类型的数据。

 

当然我们也可以只针对一个字段建立一个集合,如:

create or replace procedure sp_tes2
as
    TYPE t_serv_name IS TABLE OF itmis_pri_serv_tbl.serv_name%TYPE; 
    v_t_serv_name t_serv_name; 
begin
  begin  
      SELECT * BULK COLLECT INTO v_servs FROM itmis_pri_serv_tbl where year=2013
            ; 
   for i in 1..v_t_serv_name.count  
  loop   
    dbms_output.put_line(v_t_serv_name(i));   
  end loop;   
  end;  
    close cur_calling;          
end;	
	

 

 

 

 

 

 

分享到:
评论

相关推荐

    oracle 数据库操作 集合

    oracle 创建表空间和用户; oracle job的创建及相关命令; oracle 触发器或存储过程中执行外部exe程序; oracle 导入导出; oracle 删除所有表的数据; sqlserver 读取excel

    Java调用oracle函数返回oracle类(类似)集合

    Java调用oracle函数返回oracle类(类似)集合

    C#中oracle连接数据库的封装类

    C#中oracle连接数据库的封装类,有简短的说明

    Oracle11g从入门到精通2

    3.3.7 集合操作 3.3.8 子查询 3.4 数据操纵 3.4.1 INSERT语句 3.4.2 UPDATE语句 3.4.3 DELETE语句 3.4.4 TRLINCATE语句 3.5 数据控制 3.5.1 GRANT语句 3.5.2 REVOKE语句 3.6 Oracle常用函数 ...

    Oracle知识之集合和成员函数.pptx

    Oracle知识之集合和成员函数.pptx

    Oracle常用方法

    集合部分Oracle常用操作,实现建立表空间,创建用户,分配权限,备份/还原Oracle数据库等等。

    j2EE面试题分类集合

    面试题:java基础,java WEB,SSHI,数据库,js xml ajax ,oracle,设计模式等

    System.Data.OracleClient组件大全

    System.Data.OracleClient各版本。86和64分类集合。很实用。解决数据库不能连接的问题

    Oracle11g从入门到精通

    3.3.7 集合操作 3.3.8 子查询 3.4 数据操纵 3.4.1 INSERT语句 3.4.2 UPDATE语句 3.4.3 DELETE语句 3.4.4 TRLINCATE语句 3.5 数据控制 3.5.1 GRANT语句 3.5.2 REVOKE语句 3.6 Oracle常用函数 3.6.1 字符类...

    oracle(数据类型函数).

    里面有详细的oracle函数 1、Oracle数据类型 2、Oracle函数分为单行函数和多行函数两大类(sql_function) 单行函数分类 字符函数 数值函数 日期函数 转换函数 通用函数 函数嵌套 分组函数:集合操作符(了解) 实现...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...

    ORACLE11G宝典.rar 是光盘里面的内容,书太厚咧没法影印啊

    每类人员都可以从中找到适合自己工作需要的内容。 目录  第1章 OracIe11g的安装与卸载  1.1 下载并展开Oracle11g数据库软件  1.2 安装前的准备工作  1.2.1 检查硬件、软件要求  1.2.2 设置IP地址  1.2.3...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    ORACLE用户是学习ORACLE数据库中的基础知识,下面就介绍下类系统常用的默认ORACLE用户: 1. sys用户:超级用户,完全是个SYSDBA(管理数据库的人)。拥有dba,sysdba,sysoper等角色或权限。是oracle权限最高的用户,...

    Oracle.11g.从入门到精通 (2/2)

    3.3.7 集合操作 3.3.8 子查询 3.4 数据操纵 3.4.1 INSERT语句 3.4.2 UPDATE语句 3.4.3 DELETE语句 3.4.4 TRLINCATE语句 3.5 数据控制 3.5.1 GRANT语句 3.5.2 REVOKE语句 3.6 Oracle常用函数 3.6.1 字符类函数 3.6.2 ...

    Oracle.11g.从入门到精通 (1/2)

    3.3.7 集合操作 3.3.8 子查询 3.4 数据操纵 3.4.1 INSERT语句 3.4.2 UPDATE语句 3.4.3 DELETE语句 3.4.4 TRLINCATE语句 3.5 数据控制 3.5.1 GRANT语句 3.5.2 REVOKE语句 3.6 Oracle常用函数 3.6.1 字符类函数 3.6.2 ...

    Oracle数据库、SQL

    17.7 Oracle的锁机制 36 17.8事务不提交的后果 36 17.9回滚事务rollback 36 17.10保留点savepoint 36 十八、 数据库对象:视图view 37 18.1带子查询的create table 37 18.2带子查询的insert 37 18.3定义缺省值:...

    非常全的oracle文档

    Oracle教程 1 一、 为什么要学习Oracle 8 二、 Oracle公司 8 三、 Oracle安装、启动及缷载 9 3.1. 安装 9 3.2. Oracle的卸载、删除 9 四、 Oracle体系结构 10 4.1. 体系结构 10 4.2. 会话 11 4.3. 内存结构 11 4.4. ...

Global site tag (gtag.js) - Google Analytics