首先,简单描述一下今天使用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 job的创建及相关命令; oracle 触发器或存储过程中执行外部exe程序; oracle 导入导出; oracle 删除所有表的数据; sqlserver 读取excel
在Java中调用Oracle函数并处理返回的Oracle特定数据类型,如集合或索引表,通常涉及到Oracle的PL/SQL包和Java的JDBC驱动。以下是对这个主题的详细说明: 1. **Oracle索引表类型**: Oracle索引表是一种PL/SQL数据...
在本场景中,我们关注的是一个名为"C#中oracle连接数据库的封装类"的主题,这个主题涉及到创建一个名为`DbHelperOra.cs`的类,用于简化与Oracle数据库的交互。这种封装可以提高代码的可读性和复用性,减少直接处理...
这通常通过OracleParameter对象实现,将参数添加到OracleCommand的Parameters集合中。 4. **事务处理**:为了确保数据库操作的一致性,OracleHelper类可能会提供BeginTransaction、CommitTransaction和...
总的来说,这个分页类文件集合提供了一套完整的解决方案,用于在Oracle数据库上进行分页查询。通过合理的类设计和方法实现,可以简化开发流程,提升代码的可读性和维护性。在处理大量数据时,这样的工具显得尤为重要...
本篇文章将详细解析"C# Oracle存储过程工具类"的相关知识点,以及如何使用这个工具类。 首先,Oracle Toolkit.cs 文件很可能是包含一个C#类,该类封装了与Oracle数据库进行交互的逻辑,特别是执行存储过程的功能。...
Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的内置函数,以支持复杂的查询和数据操作。这份"oracle函数大全(分类显示).zip"压缩包显然是一份详细的Oracle函数参考手册,对于初学者而言,是一个...
这个集合包含的是不同版本的Oracle.DataAccess客户端组件,分别为32位(X86)和64位(X64)版本,以满足在不同操作系统环境下运行的应用程序的需求。 Oracle.DataAccess组件的核心功能包括: 1. 数据访问:它提供了ADO...
Oracle数据库系统是世界上最广泛使用的数据库管理系统之一,其强大的SQL支持是其核心竞争力的重要组成部分。本文将深入探讨Oracle内置的SQL函数,这些函数极大地丰富了数据查询、处理和分析的能力。 一、数学函数 ...
每个实体类通常包含一个私有字段集合,对应数据库表的列,以及公共属性和方法来操作这些字段。 5. **查看和编辑**:生成的代码可以直接在IDE中打开和编辑,以便进行必要的调整和优化。 6. **源代码参考**:附带的...
标题中的“dbeaver oracle离线驱动包”指的是DBeaver这款数据库管理工具针对Oracle数据库的离线驱动程序集合。DBeaver是一款免费且开源的通用SQL客户端,它支持多种数据库管理系统,包括Oracle。离线驱动包意味着...
这类图标有助于用户快速理解和导航Oracle系统的复杂特性。 3. **操作图标**:用于指示用户界面中的操作,如添加、删除、编辑、查询等。这些图标设计简洁明了,符合通用的UI设计规范。 4. **状态图标**:显示数据库...
使用Oracle.DataAccess.Client命名空间中的类,例如OracleConnection和OracleCommand,建立与Oracle数据库的连接,并创建一个OracleCommand对象来执行存储过程。 3. **定义自定义类型和转换方法**: 在C#中,我们...
标题中的"oracle-SpringBoot Oracle示例-Samples.zip"表明这是一个关于如何在SpringBoot应用中集成和使用Oracle数据库的示例代码集合。这个压缩包很可能包含了一系列Java代码、配置文件和其他必要的资源,用于演示...
"oracle6驱动包全部"这个标题所指的,可能是Oracle数据库的JDBC(Java Database Connectivity)驱动程序的集合,主要服务于Java开发人员,用于与Oracle数据库进行交互。 ojdbc6.jar是Oracle 11g Release 2的JDBC...
4. **批量数据准备**:在Java代码中,你可以使用`ArrayList`或其他集合类来存储批量数据。例如,对于ARRAY类型,你可以创建一个`Integer[]`数组;对于TABLE类型,你可以创建一个包含自定义对象(对应表结构)的`List...
"jar"是Java Archive的缩写,它是Java平台的标准归档格式,用于集合类、资源文件和元数据,使得Java开发者可以创建可分发的库。 总的来说,Oracle提供的这些JDBC驱动是Java开发者连接和操作Oracle数据库不可或缺的...