亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

PL/SQL中編寫Oracle數據庫分頁的存儲過程

2024-08-29 14:00:14
字體:
來源:轉載
供稿:網友

其實 Oracle數據庫的分頁還是比較容易理解的。此文以oracle數據庫中的SCOTT用戶的EMP表為例,用PL/SQL Developer編寫一個分頁存儲過程,要求是:可以輸入表名,每頁顯示記錄數,當前頁,返回總記錄數,總頁數和返回的結果集。

由于需要返回查詢出來的結果集,需要在PL/SQL中創建一個package,這個包里面定義一個refcursor類型,用于記錄sql語句查詢出來的結果集。創建包的代碼如下:

create or replace package pagingPackage as type paging_cursor is ref cursor; end pagingPackage; 

接下來開始Oracle的分頁過程,我們可以用select emp.*,rownum from emp;來顯示地表示出每行的行標。然后可以根據行標對內容進行分頁,下面這個SQL語句可以作為Oracle分頁的模板。

select * from  (select t1.*,rownum rn from (select * from emp) t1 where rownum<=12) where rn>=8;

有了上面的refcursor類型和分頁模板,下面開始編寫分頁的存儲過程,代碼如下:

create procedure paging (tableName in varchar2 ,--表名 pageSizes in number,--每頁顯示記錄數 pageNow in number,--當前頁 rowNums out number,--總記錄數 pageNum out number,--總頁數 paging_cursor out pagingPackage.paging_cursor) is  --定義部分 --定義sql語句,字符串 v_sql varchar2(1000); --定義兩個整數,用于表示每頁的開始和結束記錄數 v_begin number:=(pageNow-1)*pageSizes+1; v_end number:=pageNow*pageSizes; begin  --執行部分  v_sql:='select * from (select t1.*,rownum rn from (select * from '||tableName||') t1 where rownum<='||v_end||') where rn>='||v_begin;  --把游標和sql語句關聯  open paging_cursor for v_sql;  --計算rowNums和pageNum  --組織一個sql語句  v_sql:='select count(*) from '||tableName;  --執行該sql語句,并賦給rowNums  execute immediate v_sql into rowNums;  --計算pageNum  if mod(rowNums,pageSizes)=0 then   pageNum := rowNums/pageSizes;   else    pageNum := rowNums/pageSizes+1;    end if;  end; 

在Java中編寫代碼測試分頁,代碼如下:

package com.test.oracletest; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; //測試分頁 public class OraclePaging {   public static void main(String[] args) {     try {       // 加載驅動       Class.forName("oracle.jdbc.driver.OracleDriver");       // 獲取連接       Connection connection = DriverManager.getConnection(           "jdbc:oracle:thin:@127.0.0.1:1521:ORCL", "SCOTT", "tiger");       // 創建CallableStatement,調取數據庫的存儲過程       CallableStatement cst = connection           .prepareCall("{call paging(?,?,?,?,?,?)}");       // 給?賦值       cst.setString(1, "emp");       cst.setInt(2, 6);       cst.setInt(3, 2);       // 注冊存儲過程的輸出項       cst.registerOutParameter(4, oracle.jdbc.OracleTypes.INTEGER);       cst.registerOutParameter(5, oracle.jdbc.OracleTypes.INTEGER);       cst.registerOutParameter(6, oracle.jdbc.OracleTypes.CURSOR);       // 執行       cst.execute();       // 獲取輸出項       int rowNums = cst.getInt(4);       int pageNum = cst.getInt(5);       ResultSet rs = (ResultSet) cst.getObject(6);       System.out.println("總記錄數rowNums = " + rowNums);       System.out.println("總頁數pageNum = " + pageNum);       System.out.println("EMPNO" + '/t' + "ENAME" + '/t' + "ROWNUM");       while (rs.next()) {         System.out.println(rs.getInt("EMPNO") + " " + '/t'             + rs.getString("ENAME") + '/t' + rs.getInt("RN"));       }     } catch (Exception e) {       e.printStackTrace();     } finally {       // 關閉資源     }   } } 

執行的結果如圖所示:

oracle分頁存儲過程,sql,分頁存儲過程

我們還可以通過修改模板最內側的視圖來滿足其他一些基本的排序要求。Oracle的分頁思想就是如此。。#


注:相關教程知識閱讀請移步到oracle教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性猛交丰臀xxxxx网站| 亚洲区在线播放| 久久精品国产一区二区电影| 日本一区二区三区在线播放| 欧美日韩一二三四五区| 8090成年在线看片午夜| 亚洲精品久久久久| 亚洲天堂影视av| 国产精品久久久久久av福利| 久久久久久久久综合| 人九九综合九九宗合| 国产不卡精品视男人的天堂| 精品国产欧美一区二区五十路| 91在线视频九色| 日韩欧美国产视频| 成人网在线观看| 51久久精品夜色国产麻豆| 国产美女精品免费电影| 亚洲成av人影院在线观看| 色先锋资源久久综合5566| 久久精品国产亚洲一区二区| 成人黄在线观看| 亚洲片av在线| 青青草原成人在线视频| 久久精品视频播放| 97在线观看视频国产| 亚洲成人黄色在线| 欧美日韩精品在线| 日韩视频免费观看| 国产999在线| 久热精品视频在线观看一区| 在线午夜精品自拍| 日韩欧美精品网站| 国产欧美日韩中文字幕在线| 国产精品国产三级国产专播精品人| 亚洲欧洲成视频免费观看| 精品国产乱码久久久久久婷婷| 国产在线视频不卡| 久久久久久免费精品| 亚洲欧美日韩中文在线制服| 日av在线播放中文不卡| 欧美丝袜第一区| 国产日产久久高清欧美一区| 国产精品亚洲激情| 国产v综合ⅴ日韩v欧美大片| 国产精品久久久久久久美男| 上原亚衣av一区二区三区| 亚洲影院高清在线| 久久精品国产一区二区三区| 久久精品国产久精国产思思| 国产亚洲精品久久久久动| 欧美www视频在线观看| 国产97在线视频| 国产精品激情自拍| 欧美日韩久久久久| 日韩欧美在线观看| 97视频com| 久久亚洲一区二区三区四区五区高| 91久久国产精品| 国产精品电影观看| 日本午夜人人精品| 国产精品igao视频| 欧美日韩一区二区在线| 久久99久国产精品黄毛片入口| 国产精品揄拍一区二区| 亚洲精品动漫久久久久| 九九精品在线播放| 日韩中文字幕在线视频| 日韩电影免费在线观看中文字幕| 热99精品只有里视频精品| 精品久久久久久久久国产字幕| 亚洲精品女av网站| 亚洲色图狂野欧美| 久久国产精品电影| 日韩精品免费在线播放| 欧美成年人视频网站欧美| 亚洲精品国精品久久99热| 久久精品国产电影| 国产中文字幕日韩| 91精品国产综合久久久久久蜜臀| 成人美女免费网站视频| 国产精品久久久久久av福利软件| 日本成人在线视频网址| 成人两性免费视频| 亚洲图片欧洲图片av| 国产一区二区三区在线免费观看| 超在线视频97| 国产久一一精品| 日韩av有码在线| 久久久久久亚洲精品中文字幕| 精品亚洲va在线va天堂资源站| 欧美久久精品一级黑人c片| 久久资源免费视频| 亚洲免费伊人电影在线观看av| 欧美亚洲一级片| 91精品国产电影| 欧美成人一二三| 日韩欧美在线第一页| 91国产精品91| 日韩欧美在线免费| 亚洲自拍av在线| 欧美视频专区一二在线观看| 中文字幕亚洲综合久久| 国产精品扒开腿做爽爽爽的视频| 人体精品一二三区| 欧美日韩国产成人| 亚洲另类xxxx| 中国人与牲禽动交精品| 日韩va亚洲va欧洲va国产| 欧美最顶级丰满的aⅴ艳星| 亚洲国产精品99| 日韩激情av在线播放| 欧美极品xxxx| 欧美国产第一页| 日韩高清不卡av| 97超级碰碰碰久久久| 一区二区av在线| 91精品视频在线看| 91精品国产自产在线观看永久| 97精品国产97久久久久久| 欧美自拍视频在线观看| 久久久精品视频成人| 色小说视频一区| 国产精品人成电影在线观看| 亚洲最新av在线网站| 黑人精品xxx一区一二区| 国产精品女主播| 日韩在线视频线视频免费网站| 亚洲丁香婷深爱综合| 亚洲性猛交xxxxwww| 俺去亚洲欧洲欧美日韩| 亚洲视频专区在线| 亚洲图中文字幕| 欧美日韩国产色视频| 亚洲自拍av在线| 欧洲一区二区视频| 九九视频直播综合网| 日av在线播放中文不卡| 亚洲人在线视频| 18性欧美xxxⅹ性满足| 欧美成人精品h版在线观看| 国产不卡av在线免费观看| 国产精品丝袜久久久久久高清| 久久久999精品免费| 久久精品在线播放| 国产日韩欧美中文| 国内精品国产三级国产在线专| 亚洲国产欧美一区二区丝袜黑人| 国产欧美一区二区三区在线| 久久成人一区二区| 国产精品人成电影| 成人久久18免费网站图片| 欧美第一淫aaasss性| 亚洲欧美中文日韩在线v日本| 国产精品a久久久久久| 成人在线小视频| 一区二区三区高清国产| 欧美大片免费观看| 日韩在线激情视频| 久久综合久久88| 国产精品吹潮在线观看| 欧美黑人xxxⅹ高潮交| 国产成人亚洲综合| 性色av一区二区咪爱|