Oracle存储过程可以利用游标返回结果集,它的实现方法是本文我们主要要介绍的内容,接下来我们就开始介绍。首先我们在sqlplus中建立如下的内容: 1、程序包 SQL> create or replace package types 2 as 3 type cursorType is ref cursor; 4 end; 5 / 程序包已创建 2、函数 SQL> create or replace function sp_ListEmp return types.cursortype 2 as 3 l_cursor types.cursorType; 4 begin 5 open l_cursor for select id, title from cf_news order by id;--表的名字 6 return l_cursor; 7 end; 8 / 函数已创建。 3、存储过程 SQL> create or replace procedure getemps( p_cursor in out types.cursorType ) 2 as 3 begin 4 open p_cursor for select id, title from cf_news order by id;--表的名字 5 end; 6 / 过程已创建。 4、建立一个可执行的java控制台程序 import java.sql.*; import java.io.*; import oracle.jdbc.driver.*; class GetValues public static void main (String args []) throws SQLException, ClassNotFoundException { String driver_class = "oracle.jdbc.driver.OracleDriver"; String connect_string = "jdbc:oracle:thin:@127.0.0.1:1521:database"; String query = "begin :1 := sp_listEmp; end;"; //此处调用前面建立的函数! Connection conn; Class.forName(driver_class); conn = DriverManager.getConnection(connect_string, "scott", "tiger"); CallableStatement cstmt = conn.prepareCall(query); cstmt.registerOutParameter(1,OracleTypes.CURSOR); cstmt.execute(); ResultSet rset = (ResultSet)cstmt.getObject(1); while (rset.next ()) System.out.println( rset.getString (1) ); cstmt.close(); } 将以上的代码在Java编译器中运行,即可实现该功能。
?