萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> Oracle 10g Release2新功能之Ref Cursor

Oracle 10g Release2新功能之Ref Cursor

Ref Cursor就是我們定義在服務器端的結果集的reference。 當我們打開一個Ref Cursor的時候,沒有任何的數據返回到客戶端,相反,數據在服務器上的地址將會被返回到客戶端。這樣用戶就可以自己決定什麼時間和以那種方式通過Ref Cursor去取數據。

在以前版本的ODP.NET中,我們可以通過Ref Cursor取數據,但是我們不能把Ref Cursor作為一個Input參數傳遞給PL/SQL的存儲過程和存儲函數。但是在Oracle Database 10g Release2,我們能夠很簡單的把Ref Cursor作為Input參數傳遞給PL/SQL的存儲過程和存儲函數。這是Oracle Database 10g Release2的新功能。

我們接下來就以例程的方式來向你介紹這個新功能。

准備數據庫

我們要在數據庫中生成一個表和一個包,我們接下來的例子會用到。

請用HR用戶登錄數據庫,然後運行下面的腳本。
create table processing_result
(
 status varchar2(64)
);
create or replace package cursor_in_out as
type emp_cur_type is ref cursor return employees%rowtype;
procedure process_cursor(p_cursor in emp_cur_type);
end;
/
create or replace package body cursor_in_out as
procedure process_cursor(p_cursor in emp_cur_type) is
employee employees%rowtype;
begin
 loop
  fetch p_cursor into employee;
  exit when p_cursor%notfound;
  insert into processing_result
  values('Processed employee #' ||
  employee.employee_id || ': ' ||
  employee.first_name || ' ' ||
  employee.last_name);
 end loop;
end;
end;
/

  • 共2頁:
  • 上一頁
  • 1
  • 2
  • 下一頁
copyright © 萬盛學電腦網 all rights reserved