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,在跳出的頁面下面輸入參數的值就行了。之前不知道這樣就可以進行測試,所以自己又寫了一段測試代碼,由於水平不高,寫出來之后還是錯的,如果有哪位寫過類似的代碼,還請分享一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM