oracle存储过程输出时间,oracle存储过程(游标作为OUT参数输出)

包中带过程      要自己定义一个type [cur_name] is ref cursor游标,返回的时候就直接 procedure AAA(变量名 out [cur_name])如此申明OUT变量      存储过程 用系统默认的 sys_refcursor 游标类型 定义变量就OK了  1、Sql代码  --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;       --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;  2、Java代码  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));    }          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));     }  3、Sql代码  --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;      --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;  4、Java代码  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));    }      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));     }  5、下面是个每个学生求平均值的存储过程。遇到的问题是带参数游标中的变量名字不要和表中的一样,否则会出问题  Sql代码  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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值