`
dacoolbaby
  • 浏览: 1267459 次
  • 性别: 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特定数据类型,如集合或索引表,通常涉及到Oracle的PL/SQL包和Java的JDBC驱动。以下是对这个主题的详细说明: 1. **Oracle索引表类型**: Oracle索引表是一种PL/SQL数据...

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

    在本场景中,我们关注的是一个名为"C#中oracle连接数据库的封装类"的主题,这个主题涉及到创建一个名为`DbHelperOra.cs`的类,用于简化与Oracle数据库的交互。这种封装可以提高代码的可读性和复用性,减少直接处理...

    C# OracleHelper类, DbHelperOracle.cs.rar

    这通常通过OracleParameter对象实现,将参数添加到OracleCommand的Parameters集合中。 4. **事务处理**:为了确保数据库操作的一致性,OracleHelper类可能会提供BeginTransaction、CommitTransaction和...

    oracle 分页类文件

    总的来说,这个分页类文件集合提供了一套完整的解决方案,用于在Oracle数据库上进行分页查询。通过合理的类设计和方法实现,可以简化开发流程,提升代码的可读性和维护性。在处理大量数据时,这样的工具显得尤为重要...

    C# Oracle存储过程工具类

    本篇文章将详细解析"C# Oracle存储过程工具类"的相关知识点,以及如何使用这个工具类。 首先,Oracle Toolkit.cs 文件很可能是包含一个C#类,该类封装了与Oracle数据库进行交互的逻辑,特别是执行存储过程的功能。...

    oracle函数大全(分类显示).zip_Oracle 函数分类_oracle_oracle函数分类_oracle函数查阅用文档

    Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的内置函数,以支持复杂的查询和数据操作。这份"oracle函数大全(分类显示).zip"压缩包显然是一份详细的Oracle函数参考手册,对于初学者而言,是一个...

    Oracle.DataAccess 64位/32位 各版本集合

    这个集合包含的是不同版本的Oracle.DataAccess客户端组件,分别为32位(X86)和64位(X64)版本,以满足在不同操作系统环境下运行的应用程序的需求。 Oracle.DataAccess组件的核心功能包括: 1. 数据访问:它提供了ADO...

    oracle-SpringBoot Oracle示例-Samples.zip

    标题中的"oracle-SpringBoot Oracle示例-Samples.zip"表明这是一个关于如何在SpringBoot应用中集成和使用Oracle数据库的示例代码集合。这个压缩包很可能包含了一系列Java代码、配置文件和其他必要的资源,用于演示...

    Oracle内置SQL函数-分类整理大全

    Oracle数据库系统是世界上最广泛使用的数据库管理系统之一,其强大的SQL支持是其核心竞争力的重要组成部分。本文将深入探讨Oracle内置的SQL函数,这些函数极大地丰富了数据查询、处理和分析的能力。 一、数学函数 ...

    oracle实体类生成器

    每个实体类通常包含一个私有字段集合,对应数据库表的列,以及公共属性和方法来操作这些字段。 5. **查看和编辑**:生成的代码可以直接在IDE中打开和编辑,以便进行必要的调整和优化。 6. **源代码参考**:附带的...

    dbeaver oracle离线驱动包

    标题中的“dbeaver oracle离线驱动包”指的是DBeaver这款数据库管理工具针对Oracle数据库的离线驱动程序集合。DBeaver是一款免费且开源的通用SQL客户端,它支持多种数据库管理系统,包括Oracle。离线驱动包意味着...

    oracle图标库 oracle图标库

    这类图标有助于用户快速理解和导航Oracle系统的复杂特性。 3. **操作图标**:用于指示用户界面中的操作,如添加、删除、编辑、查询等。这些图标设计简洁明了,符合通用的UI设计规范。 4. **状态图标**:显示数据库...

    .net访问oracle数据库的方法(不安装oracle客户端)

    2. **使用ADO.NET访问Oracle数据库**:有了以上配置,我们就可以在.NET代码中使用`System.Data.OracleClient`命名空间下的类来访问Oracle数据库了。示例代码如下: ```csharp using System; using System.Data; ...

    oracle变化数据捕获

    Oracle CDC 主要分为两大类:同步CDC和异步CDC。 - **同步CDC**:通过在源数据库上配置触发器来实时捕捉数据变化。这种模式没有延迟,数据变化一旦发生即刻被捕获。同步CDC通常使用变化表和用户视图来实现,其中...

    C# 传入自定义列表List 到Oracle存储过程

    使用Oracle.DataAccess.Client命名空间中的类,例如OracleConnection和OracleCommand,建立与Oracle数据库的连接,并创建一个OracleCommand对象来执行存储过程。 3. **定义自定义类型和转换方法**: 在C#中,我们...

    oracle6驱动包全部

    "oracle6驱动包全部"这个标题所指的,可能是Oracle数据库的JDBC(Java Database Connectivity)驱动程序的集合,主要服务于Java开发人员,用于与Oracle数据库进行交互。 ojdbc6.jar是Oracle 11g Release 2的JDBC...

    java操作Oracle数据库——ARRAY、TABLE类型批量入库

    4. **批量数据准备**:在Java代码中,你可以使用`ArrayList`或其他集合类来存储批量数据。例如,对于ARRAY类型,你可以创建一个`Integer[]`数组;对于TABLE类型,你可以创建一个包含自定义对象(对应表结构)的`List...

Global site tag (gtag.js) - Google Analytics