您的位置: DOIT首页 > 软件频道 > 正文

支招:Oracle存储返回结果集的示例

12年01月10日 13:21【转载】作者:悠虎  责任编辑:王瑶

导读:Oracle存储过程可以利用游标返回结果集,它的实现方法是本文我们主要要介绍的内容,接下来我们就开始介绍。

关键词: Oracle

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存储过程利用游标返回结果集的全部过程,本文就介绍到这里了,希望本次的介绍能够对您有所收获!