程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle存儲過程利用游標返回結果集的代碼示例

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();  

將以上的代碼在Java編譯器中運行,即可實現該功能。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved