1. 程式人生 > >oracle使用儲存過程返回資料集

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

很多時候,我們想通過儲存過程獲得一個輸出集。我們知道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                                                                         ) t                                   where rownum >= (pageIndex - 1)*pageSzie +1                                   )                where t.rn < (pageIndex*pageSize + 1);       end getPaged;     第三步,進行測試。如果我們想直接在PL/SQL Developer中進行測試,直接在儲存過程名稱處右鍵,選擇test,在跳出的頁面下面輸入引數的值就行了。

參考自:https://www.cnblogs.com/jerrmy/archive/2013/03/14/2959360.html