oracle使用儲存過程返回資料集

2021-08-20 04:37:16 字數 1074 閱讀 6502

很多時候,我們想通過儲存過程獲得乙個輸出集。我們知道sql server的儲存過程在執行之後,返回的就是乙個集合。但是oracle如果要獲得乙個輸出集合,就要麻煩一點了。

oracle獲得輸出集合是通過游標實現的,而且游標需要在package中進行宣告。下面就拿分頁的儲存過程為例。

首先,先建立乙個包package,類似於c#中的介面,只用於申明,沒有任何實際的**。

create or replace package forpaged is

type my_csr is ref cursor;

procedure getpaged(pagesize in number,pageindex in number,totalpage out number,csr out forpaged.my_csr);

end forpaged;

其實包裡面就是乙個游標的申明和這個包包含的儲存過程。游標的申明在這裡很像c#中輸出引數型別的申明。

第二步,就是實現剛才包中申明的儲存過程。

create or replace procedure getpaged(pagesize in number,pageindex in number,totalpage out number,csr forpaged.my_csr) is

begin

select count(*) into totalpage from orders;

totalpage := ceil(totalpage*1.0/pageszie);

open csr for

select * from (

select t.*,rownum rn from(

select * from orders order by id desc

) twhere rownum >= (pageindex - 1)*pageszie +1

)where t.rn < (pageindex*pagesize + 1);

end getpaged;

第三步,進行測試。如果我們想直接在pl/sql developer中進行測試,直接在儲存過程名稱處右鍵,選擇test,在跳出的頁面下面輸入引數的值就行了。

Oracle使用儲存過程返回查詢游標

如果報表邏輯非常複雜的話,可以把報表邏輯放到儲存過程裡,加工乙個全域性臨時表。前端查詢的時候只查詢臨時表即可。只是第一次查詢需要忍受加工的時間。建立儲存過程,返回sys refcursor create or replace procedure p get agent v agent cate in...

Oracle儲存過程返回游標

oracle儲存過程返回游標 有倆種方法 一種是宣告系統游標,一種是宣告自定義游標,然後後面操作一樣,引數型別為 in out 或out 1 宣告個人系統游標.推薦 create or replace p temp procedure cur arg out sys refcursor 方法1 be...

oracle 儲存過程返回游標

示例,很多時候我們需要返回結果集,這個時候,我們就可以返回游標的方式給別人呼叫 create or replace procedure getprocontactinfowithpropid prop id in varchar2,outcursor out sys refcursor isbegi...