日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

oracle使用存儲過程返回數據集

系統 2234 0
很多時候,我們想通過存儲過程獲得一個輸出集。我們知道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,在跳出的頁面下面輸入參數的值就行了。之前不知道這樣就可以進行測試,所以自己又寫了一段測試代碼,由于水平不高,寫出來之后還是錯的,如果有哪位寫過類似的代碼,還請分享一下。

oracle使用存儲過程返回數據集


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 丹江口市| 钟祥市| 宜州市| 庆阳市| 常熟市| 洪湖市| 武宁县| 马尔康县| 巴青县| 贵定县| 祁阳县| 彭泽县| 石景山区| 剑阁县| 琼中| 会昌县| 汶川县| 维西| 兴化市| 东至县| 潜江市| 贵州省| 和政县| 五原县| 扶余县| 铜鼓县| 新沂市| 磐安县| 绥滨县| 东台市| 搜索| 昌黎县| 龙胜| 重庆市| 新宁县| 辽中县| 文化| 禄丰县| 池州市| 广汉市| 井冈山市|