Oracle中返回結果集的儲存過程

2021-05-10 01:48:25 字數 1589 閱讀 9936

oracle中返回結果集的儲存過程

google了一篇不錯的例子,加了點註解,這樣看起來更方便了:)

oracle不像sqlserver那樣在儲存過程中用select就可以返回結果集,而是通過out型的引數進行結果集返回的。實際上是利用ref cursor

--procedure返回記錄集:

----------------------宣告乙個package--------------

create or replace package pkg_test

as type myrctype is ref cursor;

procedure get (p_id number, p_rc out myrctype); --package中宣告名為get 的procedure(只有介面沒內容)

end pkg_test;

-----------------宣告package body,即上面package中的內容,包括procedure get---------------------

create or replace package body pkg_test

as procedure get (p_id number, p_rc out myrctype)

is sqlstr varchar2 (500);

begin

if p_id = 0 then

open p_rc for

select id, name, ***, address, postcode, birthday

from student;

else

sqlstr :=

'select id,name,***,address,postcode,birthday

from student where id=:w_id'; --w_id是個引數,

--以下 p_rc是個

ref cursor

游標型別,而且是out型引數,即可返回乙個記錄集了。using p_id就是替換上面sql中:w_id值拉:)

open p_rc for sqlstr using p_id; 

end if;

end get;

end pkg_test;

--function返回記錄集的例子,原理和上面相同,而是用function的return值來返回記錄集。

函式返回記錄集:

建立帶ref cursor定義的包和包體及函式:

create or replace

package pkg_test as

/* 定義ref cursor型別

不加return型別,為弱型別,允許動態sql查詢,

否則為強型別,無法使用動態sql查詢;

*/ type myrctype is ref cursor;

function get(intid number) return myrctype;

end pkg_test;

/return rc;

end get;

end pkg_test;

Oracle中返回結果集的儲存過程

oracle中返回結果集的儲存過程 注 本文轉貼 google了一篇不錯的例子,加了點註解,這樣看起來更方便了 oracle不像sqlserver那樣在儲存過程中用select就可以返回結果集,而是通過out型的引數進行結果集返回的。實際上是利用ref cursor procedure返回記錄集 宣...

Oracle 儲存過程返回結果集

oracle 儲存過程返回結果集 1.返回陣列 在oracle後台建立乙個程式包或者儲存過程 connect scott tiger create or replace package ado callpkg as type eid is table of number 4 index by bin...

oracle 儲存過程返回結果集

好久沒上來了,難道今天工作時間稍有空閒,研究了一下oracle儲存過程返回結果集.配合oracle臨時表,使用儲存過程來返回結果集的資料讀取方式可以解決海量資料表與其他表的連線問題.在儲存過程中先根據過濾條件從海量資料表中選出符合條件的記錄並存放到臨時中,可以通過乙個檢視將臨時表與其他相關表連線起來...