- 浏览: 595108 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (268)
- ext基础 (72)
- Java基础 (68)
- jquery (14)
- oracle (21)
- sqlserver (7)
- linux (2)
- webserver (1)
- C/C++ (1)
- sql (9)
- IDE (2)
- java 智能卡 (1)
- mysql (6)
- ibatis (2)
- struts2 (3)
- cvs (1)
- 服务器 (1)
- html (11)
- freemarker (4)
- liferay (2)
- jMS (1)
- iphone (1)
- c# (1)
- Android (11)
- wince (6)
- javascript (4)
- ps (1)
- hibernate (1)
- 其他 (3)
最新评论
-
ilyq:
请问,px.gif 在哪里
斜线表头 -
jisang:
没看懂,第一个org.js和最后的js什么关系,可否发我一份完 ...
用ExtJS 实现动态载入树(Load tree) -
JavaStudyEye:
我去,能否搞个正确点的,,,
<#list ...
freemarker 遍历map 对象 -
PangSir:
大爱,简直是大爱!!困扰这么久以来的问题,虽然知道是CSS的问 ...
ExtJs checkbox radiobox 问题 汇总 -
skynet_java:
有demo嘛!邮箱:think_world@foxmail.c ...
消息推送服务需求 - 服务器开发、客户端开发
配合oracle临时表, 使用存储过程来返回结果集的数据读取方式可以解决海量数据表与其他表的连接问题. 在存储过程中先根据过滤条件从海量数据表中选出符合条件的记录并存放到临时中, 可以通过一个视图将临时表与其他相关表连接起来, 从而避免海量数据造成的连接效率问题.
好久没上来了, 难道今天工作时间稍有空闲, 研究了一下oracle存储过程返回结果集.
配合oracle临时表, 使用存储过程来返回结果集的数据读取方式可以解决海量数据表与其他表的连接问题. 在存储过程中先根据过滤条件从海量数据表中选出符合条件的记录并存放到临时中, 可以通过一个视图将临时表与其他相关表连接起来, 从而避免海量数据造成的连接效率问题.
具体实现如下:
-- 启用服务器输出
---------------------
set serveroutput on
-- 创建测试表
---------------------
-- 声明程序包
---------------------
create or replace package pkg_test
as
type type_cursor is ref cursor;
procedure read_rows (header varchar2, result out type_cursor);
end pkg_test;
/
好久没上来了, 难道今天工作时间稍有空闲, 研究了一下oracle存储过程返回结果集.
配合oracle临时表, 使用存储过程来返回结果集的数据读取方式可以解决海量数据表与其他表的连接问题. 在存储过程中先根据过滤条件从海量数据表中选出符合条件的记录并存放到临时中, 可以通过一个视图将临时表与其他相关表连接起来, 从而避免海量数据造成的连接效率问题.
本文只讨论使用存储过程返回结果集.
具体实现如下:
-- 启用服务器输出
---------------------
set serveroutput on
-- 创建测试表
---------------------
create table test_pkg_test
(
id number(10) constraint pk_test_pkg_test primary key,
name varchar2(30)
);
-- 写入测试数据
---------------------
begin
insert into test_pkg_test(id) values(1);
insert into test_pkg_test(id) values(2);
insert into test_pkg_test(id) values(3);
insert into test_pkg_test(id) values(4);
insert into test_pkg_test(id) values(5);
insert into test_pkg_test(id) values(6);
insert into test_pkg_test(id) values(7);
insert into test_pkg_test(id) values(8);
insert into test_pkg_test(id) values(9);
insert into test_pkg_test(id) values(10);
insert into test_pkg_test(id) values(11);
insert into test_pkg_test(id) values(12);
insert into test_pkg_test(id) values(13);
insert into test_pkg_test(id) values(14);
insert into test_pkg_test(id) values(15);
insert into test_pkg_test(id) values(16);
insert into test_pkg_test(id) values(17);
insert into test_pkg_test(id) values(18);
end;
/
update test_pkg_test set name='name of ' || to_char(id);
commit;
程序包
java调用
好久没上来了, 难道今天工作时间稍有空闲, 研究了一下oracle存储过程返回结果集.
配合oracle临时表, 使用存储过程来返回结果集的数据读取方式可以解决海量数据表与其他表的连接问题. 在存储过程中先根据过滤条件从海量数据表中选出符合条件的记录并存放到临时中, 可以通过一个视图将临时表与其他相关表连接起来, 从而避免海量数据造成的连接效率问题.
具体实现如下:
-- 启用服务器输出
---------------------
set serveroutput on
-- 创建测试表
---------------------
create table test_pkg_test ( id number(10) constraint pk_test_pkg_test primary key, name varchar2(30) ); -- 写入测试数据 --------------------- begin insert into test_pkg_test(id) values(1); insert into test_pkg_test(id) values(2); insert into test_pkg_test(id) values(3); insert into test_pkg_test(id) values(4); insert into test_pkg_test(id) values(5); insert into test_pkg_test(id) values(6); insert into test_pkg_test(id) values(7); insert into test_pkg_test(id) values(8); insert into test_pkg_test(id) values(9); insert into test_pkg_test(id) values(10); insert into test_pkg_test(id) values(11); insert into test_pkg_test(id) values(12); insert into test_pkg_test(id) values(13); insert into test_pkg_test(id) values(14); insert into test_pkg_test(id) values(15); insert into test_pkg_test(id) values(16); insert into test_pkg_test(id) values(17); insert into test_pkg_test(id) values(18); end; / update test_pkg_test set name='name of ' || to_char(id); commit;
-- 声明程序包
---------------------
create or replace package pkg_test
as
type type_cursor is ref cursor;
procedure read_rows (header varchar2, result out type_cursor);
end pkg_test;
/
好久没上来了, 难道今天工作时间稍有空闲, 研究了一下oracle存储过程返回结果集.
配合oracle临时表, 使用存储过程来返回结果集的数据读取方式可以解决海量数据表与其他表的连接问题. 在存储过程中先根据过滤条件从海量数据表中选出符合条件的记录并存放到临时中, 可以通过一个视图将临时表与其他相关表连接起来, 从而避免海量数据造成的连接效率问题.
本文只讨论使用存储过程返回结果集.
具体实现如下:
-- 启用服务器输出
---------------------
set serveroutput on
-- 创建测试表
---------------------
create table test_pkg_test
(
id number(10) constraint pk_test_pkg_test primary key,
name varchar2(30)
);
-- 写入测试数据
---------------------
begin
insert into test_pkg_test(id) values(1);
insert into test_pkg_test(id) values(2);
insert into test_pkg_test(id) values(3);
insert into test_pkg_test(id) values(4);
insert into test_pkg_test(id) values(5);
insert into test_pkg_test(id) values(6);
insert into test_pkg_test(id) values(7);
insert into test_pkg_test(id) values(8);
insert into test_pkg_test(id) values(9);
insert into test_pkg_test(id) values(10);
insert into test_pkg_test(id) values(11);
insert into test_pkg_test(id) values(12);
insert into test_pkg_test(id) values(13);
insert into test_pkg_test(id) values(14);
insert into test_pkg_test(id) values(15);
insert into test_pkg_test(id) values(16);
insert into test_pkg_test(id) values(17);
insert into test_pkg_test(id) values(18);
end;
/
update test_pkg_test set name='name of ' || to_char(id);
commit;
程序包
-- 声明程序包 --------------------- create or replace package pkg_test as type type_cursor is ref cursor; procedure read_rows (header varchar2, result out type_cursor); end pkg_test; / -- 实现程序包 --------------------- create or replace package body pkg_test as procedure read_rows (header varchar2, result out type_cursor) is sqlText varchar2(500); begin if header is null or length(header)=0 then sqlText := 'select * from test_pkg_test'; else sqlText := 'select * from test_pkg_test where substr(name,1,' || to_char(length(header)) || ')=''' || header || ''''; end if; --dbms_output.put_line(sqlText); open result for sqlText; end read_rows; end pkg_test; / -- 在 sqlplus 中测试 --------------------- var result refcursor exec pkg_test.read_rows(null,:result); print result exec pkg_test.read_rows('name of 1', :result); print result;
java调用
CallableStatement cstmt = c.prepareCall( "{call pkg_test.read_rows(?,?)}"); cstmt.registerOutParameter(1, OracleTypes.INTEGER); cstmt.registerOutParameter(2, OracleTypes.CURSOR); //cstmt.setInt(1, 1); cstmt.setInt(1,3); cstmt.execute(); rs = ((OracleCallableStatement) cstmt).getCursor(2); while (rs.next()) { System.out.print(rs.getString(1)+" "); System.out.println(rs.getString(2)); }
发表评论
-
orcale 常用练习
2011-07-04 08:52 1103(ORACLE-E-001)员工信息综合查询 1. 用 sq ... -
oracle 过程update 不成功的一个原因
2011-04-01 17:08 1940今天一个同事写oracle 的存储过程遇到了一个问题, ... -
oracle 季度
2011-03-29 14:31 1099-- 本季度第一天 SELECT to_char(TRUNC ... -
数据库常用查询
2011-03-10 13:54 917http://wt871031.blog.163.com/bl ... -
ORACLE JOB INTERVAL 参数设置
2011-03-10 13:04 2572------------------------------- ... -
plsql 设置
2010-11-28 16:06 1113E:\oracle\NETWORK\ADMIN\tnsname ... -
oracle 常用函数
2010-09-09 22:16 11231。上月末天: SQL> select to_char( ... -
Ibatis调用存储过程
2010-09-06 17:16 927Ibatis调用存储过程 procedure.xml的iba ... -
ibatis存储过程中,Oracle VARRAY自定义数据类型做IN参数的处理。
2010-09-06 17:07 1413(1)在oracle中有如下自定义数据类型。 create ... -
sql 语句
2010-09-06 15:49 1092select * from t where rownum ... -
导出表结构及数据
2010-06-09 21:58 1003mssql2.rar -
过程1
2010-04-16 09:22 867create or replace procedure aut ... -
DECODE 实现表的转置
2010-04-15 21:50 2050数据库中的表是由列和 ... -
oracle 存储过程 一例
2010-04-15 16:53 1528CREATE OR REPLACE PACKAGE PY_PC ... -
转:Oracle递归查询
2010-04-12 17:46 2036有的情况下,我们需要用递归的方法整理数据,这才程序中很容易做到 ... -
oracle 数据字典
2010-04-10 12:58 1024select ID,BH,e.dictmean as BM,S ... -
oracle date日期类型
2010-04-09 16:47 1398insert into table_income valu ... -
mysql oracle sql server 分页
2010-04-06 08:57 1224SQL server分页: Sql代码 select t ... -
视图实例
2010-03-23 16:00 969CREATE or REPLACE view view_wil ... -
存储过程返回结果集
2010-03-23 15:31 1448存储过程返回OUT参数的游标 例子:每个学生求平均值的存储过 ...
相关推荐
本篇将深入探讨如何在Oracle存储过程中创建并返回一个结果集,并结合Java代码展示如何在应用程序中使用这个结果集。 首先,我们需要理解`OUT`参数的概念。在Oracle存储过程中,`IN`参数用于传递数据到过程,`OUT`...
Java调用Oracle存储过程返回结果集Record、Cursor参照 Java调用Oracle存储过程返回结果集(Record)是指在Java程序中通过调用Oracle存储过程来获取记录集的结果。下面将详细介绍相关知识点。 创建Type 在Oracle中...
### Oracle存储过程返回结果集详解 #### 一、概述 在Oracle数据库中,存储过程是一种重要的编程组件,它能够执行一系列SQL语句并处理复杂的业务逻辑。存储过程的一个常见应用场景是返回结果集(Record Set),这有...
本篇将详细讨论存储过程返回结果集的两种类型:调用者(to caller)和客户应用(to client)。 首先,让我们理解这两种返回结果集类型的差异: 1. **调用者(to caller)**: 当存储过程的结果集返回给调用者时,...
Delphi 中调用 Oracle 的存储过程返回数据集是指在 Delphi 应用程序中调用 Oracle 数据库中的存储过程,并将存储过程的返回结果集显示在 Delphi 应用程序中。这种方式可以将 Oracle 数据库中的数据实时同步到 Delphi...
### CallableStatement调用Oracle存储过程返回结果集(ResultSet) #### 一、无返回值的存储过程调用 在本节中,我们通过一个具体的例子来详细介绍如何使用`CallableStatement`来调用Oracle数据库中的无返回值存储...
本篇文档主要介绍了如何通过存储过程返回结果集,分为两种方式:过程返回记录集和函数返回记录集。 1. 过程返回记录集: 在Oracle中,可以通过OUT参数来让存储过程返回一个结果集。这里使用了REF CURSOR类型,它是...
总的来说,使用VB调用Oracle程序包内的存储过程返回结果集是一个常见的任务,需要熟悉数据库操作、存储过程以及VB的数据库访问技术。理解这个过程对于开发高效、可靠的数据库驱动的应用至关重要。
当存储过程返回一个结果集时,处理方式略有不同。以下是一个例子: ```sql CREATE OR REPLACE FUNCTION GET_EMPLOYEES RETURN SYS_REFCURSOR AS v_result SYS_REFCURSOR; BEGIN OPEN v_result FOR SELECT * FROM ...
### Java存储过程返回数据集 #### 标题与描述中的知识点概述 在Oracle数据库中,存储过程返回数据集的功能可以通过定义游标(RefCursor)来实现。与SQL Server相比,Oracle在这一方面需要额外的步骤来进行配置和...
大数据量,返回值虽然是CLOB,依然会报错; CLOB变量需要dbms_lob.createtemporary,临时表空间中,建立临时LOB。 大数据量,返回值虽然是CLOB,依然会报错; CLOB变量需要dbms_lob.createtemporary,临时表空间中,...
如果存储过程返回一个结果集,例如我们需要查询某个ID对应的数据,可以创建一个返回结果集的存储过程。在Java中处理这种存储过程的步骤类似,但需要额外处理返回的结果集: 1. 调用存储过程:`cs.execute();` 2. ...
oracle存储过程中,实现成绩分段显示人数,produce中带三个传入参数:起始分数(例如0),总分(例如100),分数间隔(例如10)。一个返回参数为游标,用来返回结果集。
现在,`dataTable`变量就包含了存储过程返回的数据。你可以遍历这个表格,访问每一行和每一列的数据: ```csharp foreach (DataRow row in dataTable.Rows) { foreach (DataColumn column in dataTable.Columns) ...
- `ResultSet`对象`rs`可以像处理普通的SQL查询结果一样进行遍历,读取存储过程返回的数据。 注意,处理返回的Cursor时,必须确保存储过程已经正确地打开并返回了游标,否则在Java端无法正常获取数据。此外,为了...
存储过程返回结果集
LINQ TO SQL 存储过程-返回结果集 在 LINQ to SQL 中,使用存储过程可以返回结果集,包括单个结果集和多个结果集。下面我们将详细介绍如何使用 LINQ to SQL 实现存储过程的返回结果集。 一、返回单个结果集 在 ...
本文将深入探讨如何在存储过程中使用另一个存储过程返回的查询结果集。 首先,假设我们有一个名为`sp_GetBorrowRecord`的存储过程,它接受两个日期参数`@BeginTime`和`@EndTime`,并返回所有在这段时间内发生的借书...
存储过程是预编译的SQL语句集合,可以接受参数、返回结果并执行一系列操作。函数则类似于存储过程,但必须返回一个值。在Oracle中,它们都存储在数据库中,可被多次调用,提高了代码复用性和执行效率。 在Hibernate...