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