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

存储过程返回结果集

阅读更多
存储过程返回OUT参数的游标
例子:每个学生求平均值的存储过程。
遇到的问题是带参数游标中的变量名字不要和表中的一样,否则会出问题
create or replace procedure AAA   
as    
--查询学生表的ID   
cursor s_sno is select s.sno from student s;    
--通过学生ID查询平均成绩   
cursor sc_avg(s_no varchar2) is select avg(sc.degree) from score sc where sc.sno=s_no;    
s_sno_j student.sno%type;   --变量ID   
sc_avg_i score.degree%type; --变量平局成绩   
begin  
 open s_sno;--打开查询ID的游标   
 loop   
   fetch s_sno into s_sno_j;   
   exit when s_sno%notfound;     
     open sc_avg(s_sno_j); --打开查询平均成绩的游标,参数为学生ID   
     loop   
     fetch sc_avg into sc_avg_i;   
     exit when sc_avg%notfound;   
     dbms_output.put_line(sc_avg_i);   
     end loop;   
     close sc_avg;   
 end loop;   
 close s_sno;   
end AAA;  


###############################################################################################
包中带过程 要自己定义一个type [cur_name] is ref cursor游标,返回的时候就直接 procedure AAA(变量名 out [cur_name])如此申明OUT变量
存储过程 用系统默认的 sys_refcursor 游标类型 定义变量就OK了
================================================================================================
--PL/SQL Code(存储过程) 带游标的OUT参数,返回游标(ref cursor)   
    
create or replace procedure retCursor(ret_cursor out sys_refcursor)is  
ret_cursor_value  sys_refcursor;   
begin  
open ret_cursor_value for select * from student;   
 ret_cursor:=ret_cursor_value;   
end retCursor;  


_____________________________________________________
Class.forName("oracle.jdbc.driver.OracleDriver");   
Connection conn = Connection conn = DriverManager.getConnection                       ("jdbc:oracle:thin:@XX.XX.XX.XXX:XXXX:oracle9i","XXX_temp","XXX_temp");    
  
DriverManager.registerDriver (new oracle.jdbc.OracleDriver());      
CallableStatement cs = conn.prepareCall("{ call retCursor(?) }");   
cs.registerOutParameter(1,OracleTypes.CURSOR);   
cs.execute();   
ResultSet rs = ((OracleCallableStatement)cs).getCursor(1);   
while(rs.next())   
{   
    System.out.println(rs.getString(1)+"  "+rs.getString(2)+"  "+rs.getString(3)+"  "+ rs.getDate(4)+"  "+rs.getString(5));   
} 

===========================================================================================
--PL/SQL Code (包中带过程) 过程带游标的OUT参数,返回游标(ref cursor)   
  
create or replace package my_pack as  
 type my_ref_cursor is ref cursor;   
 procedure getMyCursor(val out my_ref_cursor);    
end my_pack;   
  
create or replace package body my_pack as  
 procedure getMyCursor(val out my_ref_cursor)   
 is  
 begin  
  open val for select * from student;   
 end;   
end my_pack;   

Class.forName("oracle.jdbc.driver.OracleDriver");   
Connection conn = DriverManager.getConnection                     ("jdbc:oracle:thin
:@XX.XX.XX.XXX:XXXX:oracle9i","XXX_temp","XXX_temp");    
DriverManager.registerDriver (new oracle.jdbc.OracleDriver());      
CallableStatement cs = conn.prepareCall("{ call my_pack.getMyCursor(?) }");   
cs.registerOutParameter(1,OracleTypes.CURSOR);   
cs.execute();   
ResultSet rs = ((OracleCallableStatement)cs).getCursor(1);   
while(rs.next())   
{   
    System.out.println(rs.getString(1)+"  "+rs.getString(2)+"  "+rs.getString(3)+"  "+ rs.getDate(4)+"  "+rs.getString(5));   
} 


============================================================================================
分享到:
评论

相关推荐

    java调用oracle存储过程返回结果集,Record,cursor参照.pdf

    Java调用Oracle存储过程返回结果集Record、Cursor参照 Java调用Oracle存储过程返回结果集(Record)是指在Java程序中通过调用Oracle存储过程来获取记录集的结果。下面将详细介绍相关知识点。 创建Type 在Oracle中...

    Oracle存储过程返回结果集

    本篇将深入探讨如何在Oracle存储过程中创建并返回一个结果集,并结合Java代码展示如何在应用程序中使用这个结果集。 首先,我们需要理解`OUT`参数的概念。在Oracle存储过程中,`IN`参数用于传递数据到过程,`OUT`...

    oracle的存储过程如何返回结果集

    ### Oracle存储过程返回结果集详解 #### 一、概述 在Oracle数据库中,存储过程是一种重要的编程组件,它能够执行一系列SQL语句并处理复杂的业务逻辑。存储过程的一个常见应用场景是返回结果集(Record Set),这有...

    存储过程的返回结果集有2中类型

    本篇将详细讨论存储过程返回结果集的两种类型:调用者(to caller)和客户应用(to client)。 首先,让我们理解这两种返回结果集类型的差异: 1. **调用者(to caller)**: 当存储过程的结果集返回给调用者时,...

    CallableStatement调用Oracle存储过程返回结果集(ResultSet).doc

    ### CallableStatement调用Oracle存储过程返回结果集(ResultSet) #### 一、无返回值的存储过程调用 在本节中,我们通过一个具体的例子来详细介绍如何使用`CallableStatement`来调用Oracle数据库中的无返回值存储...

    Delphi中调用oracle的存储过程返回数据集

    Delphi 中调用 Oracle 的存储过程返回数据集是指在 Delphi 应用程序中调用 Oracle 数据库中的存储过程,并将存储过程的返回结果集显示在 Delphi 应用程序中。这种方式可以将 Oracle 数据库中的数据实时同步到 Delphi...

    Oracle 存储过程返回结果集.doc

    本篇文档主要介绍了如何通过存储过程返回结果集,分为两种方式:过程返回记录集和函数返回记录集。 1. 过程返回记录集: 在Oracle中,可以通过OUT参数来让存储过程返回一个结果集。这里使用了REF CURSOR类型,它是...

    使用VB调用Oracle程序包内的存储过程返回结果集

    总的来说,使用VB调用Oracle程序包内的存储过程返回结果集是一个常见的任务,需要熟悉数据库操作、存储过程以及VB的数据库访问技术。理解这个过程对于开发高效、可靠的数据库驱动的应用至关重要。

    CallableStatement调用Oracle存储过程返回结果集(ResultSet).docx

    当存储过程返回一个结果集时,处理方式略有不同。以下是一个例子: ```sql CREATE OR REPLACE FUNCTION GET_EMPLOYEES RETURN SYS_REFCURSOR AS v_result SYS_REFCURSOR; BEGIN OPEN v_result FOR SELECT * FROM ...

    ORACLE 存储过程返回结果集,拼接为字符串输出为clob

    大数据量,返回值虽然是CLOB,依然会报错; CLOB变量需要dbms_lob.createtemporary,临时表空间中,建立临时LOB。 大数据量,返回值虽然是CLOB,依然会报错; CLOB变量需要dbms_lob.createtemporary,临时表空间中,...

    java存储过程返回数据集

    ### Java存储过程返回数据集 #### 标题与描述中的知识点概述 在Oracle数据库中,存储过程返回数据集的功能可以通过定义游标(RefCursor)来实现。与SQL Server相比,Oracle在这一方面需要额外的步骤来进行配置和...

    CallableStatement调用Oracle存储过程返回结果集(ResultSet).pdf

    如果存储过程返回一个结果集,例如我们需要查询某个ID对应的数据,可以创建一个返回结果集的存储过程。在Java中处理这种存储过程的步骤类似,但需要额外处理返回的结果集: 1. 调用存储过程:`cs.execute();` 2. ...

    成绩分段oracle存储过程返回结果集

    oracle存储过程中,实现成绩分段显示人数,produce中带三个传入参数:起始分数(例如0),总分(例如100),分数间隔(例如10)。一个返回参数为游标,用来返回结果集。

    java调用oracle存储过程返回结果集,Record,cursor.[参考].pdf

    - `ResultSet`对象`rs`可以像处理普通的SQL查询结果一样进行遍历,读取存储过程返回的数据。 注意,处理返回的Cursor时,必须确保存储过程已经正确地打开并返回了游标,否则在Java端无法正常获取数据。此外,为了...

    C#中调用oracle存储过程返回数据集

    现在,`dataTable`变量就包含了存储过程返回的数据。你可以遍历这个表格,访问每一行和每一列的数据: ```csharp foreach (DataRow row in dataTable.Rows) { foreach (DataColumn column in dataTable.Columns) ...

    hibernate query调用oracle存储过程

    存储过程是预编译的SQL语句集合,可以接受参数、返回结果并执行一系列操作。函数则类似于存储过程,但必须返回一个值。在Oracle中,它们都存储在数据库中,可被多次调用,提高了代码复用性和执行效率。 在Hibernate...

    分享:在存储过程中使用另一个存储过程返回的查询结果集的方法

    本文将深入探讨如何在存储过程中使用另一个存储过程返回的查询结果集。 首先,假设我们有一个名为`sp_GetBorrowRecord`的存储过程,它接受两个日期参数`@BeginTime`和`@EndTime`,并返回所有在这段时间内发生的借书...

    Asp Oracle存储过程返回结果集的代码

    在这段文字中,主要介绍了如何使用ASP(Active Server Pages)技术调用Oracle存储过程,并且获取该存储过程返回的结果集。为了更好地理解这些步骤,下面将详细解读相关知识点。 首先,Oracle作为一个功能强大的...

    oracle 返回结果集

    存储过程返回结果集

Global site tag (gtag.js) - Google Analytics