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

首頁 > 數據庫 > Oracle > 正文

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

2020-07-26 14:05:30
字體:
來源:轉載
供稿:網友

其實 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的分頁思想就是如此。。#

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产做受69高潮| 国产日韩精品综合网站| 亚洲图片欧洲图片av| 日韩中文字幕在线精品| 国模吧一区二区三区| 久久黄色av网站| 日韩精品免费在线播放| 亚洲香蕉成视频在线观看| 亚洲一区二区福利| 日韩av在线免费观看一区| 一本色道久久88亚洲综合88| 色99之美女主播在线视频| 日韩精品免费观看| 成人黄色av播放免费| 欧洲中文字幕国产精品| 欧美成人中文字幕| 2021国产精品视频| 国色天香2019中文字幕在线观看| 日韩在线高清视频| 色婷婷av一区二区三区久久| 国产成人精品a视频一区www| 68精品国产免费久久久久久婷婷| 久久精品中文字幕电影| 91精品国产综合久久香蕉| 欧美与欧洲交xxxx免费观看| 欧美日韩国产页| 中文字幕亚洲欧美| 亚洲国产精品人久久电影| 日韩av中文在线| 国产精品视频免费在线| 欧美激情一区二区三区在线视频观看| 精品国产成人av| 精品亚洲va在线va天堂资源站| 亚洲桃花岛网站| 国产suv精品一区二区| 欧美—级a级欧美特级ar全黄| 中文字幕亚洲第一| 日韩高清有码在线| 日韩成人av一区| 欧美剧在线观看| 91在线高清免费观看| 国产精品一区二区女厕厕| 久久成人免费视频| 日韩av影片在线观看| 欧美极品在线视频| 中文字幕在线精品| 高潮白浆女日韩av免费看| 欧美性感美女h网站在线观看免费| 丁香五六月婷婷久久激情| 精品国产电影一区| 91精品久久久久久久久久久| 国产日韩中文字幕| 国产成人精品综合久久久| 91精品中文在线| 精品中文字幕在线2019| 亚洲精品一区中文| xxav国产精品美女主播| 午夜精品久久17c| 国产日韩在线播放| 亚洲福利视频网站| 九九精品视频在线观看| 欧美视频在线免费看| 成人妇女免费播放久久久| 欧美一级在线亚洲天堂| 欧美激情伊人电影| 亚洲最新在线视频| 91久久中文字幕| 色多多国产成人永久免费网站| 国产日韩精品在线| 欧美成aaa人片在线观看蜜臀| 一本色道久久综合狠狠躁篇的优点| 日本国产欧美一区二区三区| 久久91亚洲精品中文字幕奶水| 一区二区三区动漫| 国产成人精品久久久| 亚洲午夜色婷婷在线| 日韩高清电影好看的电视剧电影| 欧美精品福利视频| 亚洲一区二区三区sesese| 51ⅴ精品国产91久久久久久| 欧美成年人视频网站| 一区二区av在线| 国产91成人在在线播放| 97久久超碰福利国产精品…| 亚洲欧洲偷拍精品| 亚洲在线视频观看| 久久成人精品一区二区三区| 国产成人综合久久| 亚洲精品国产suv| 日韩亚洲成人av在线| 亚洲欧美综合精品久久成人| 国产亚洲激情在线| 国产精品免费一区| 欧美日韩精品二区| 国产精品成人免费电影| 亚洲人成在线观看| 高清一区二区三区日本久| 久久影视电视剧免费网站清宫辞电视| 亚洲一级黄色av| 亚洲网站在线播放| 中文字幕亚洲二区| 日韩av片永久免费网站| 亚洲高清免费观看高清完整版| 中文字幕久精品免费视频| 久久亚洲私人国产精品va| 亚洲欧美成人一区二区在线电影| 亚洲电影免费观看| www.日韩视频| 国产精品高清在线观看| 亚洲国产天堂网精品网站| 国产美女主播一区| 神马国产精品影院av| 国产精品精品视频一区二区三区| 欧美xxxx做受欧美| 日本不卡视频在线播放| 久久亚洲私人国产精品va| 欧美在线激情网| 欧美成人合集magnet| 亚洲日本aⅴ片在线观看香蕉| 欧美日韩国产一区二区三区| 国产精品午夜视频| 欧美孕妇与黑人孕交| 国内精品小视频| 欧美性猛交xxxx乱大交| 国产999精品久久久影片官网| 国产成人aa精品一区在线播放| 日本欧美黄网站| www.日本久久久久com.| 九九九久久久久久| 欧美第一页在线| 欧美成人精品不卡视频在线观看| 精品久久久久久亚洲精品| 欧美日韩亚洲高清| 狠狠躁夜夜躁人人爽天天天天97| 精品日本美女福利在线观看| 欧洲美女7788成人免费视频| 97超视频免费观看| 色黄久久久久久| 青草热久免费精品视频| 欧美国产乱视频| 日韩av网站大全| www.欧美三级电影.com| 国产亚洲精品va在线观看| 日韩欧美亚洲一二三区| 青青青国产精品一区二区| 日韩av网站电影| 国产精品久久久精品| 国产精品视频区| 少妇高潮久久77777| 欧美在线中文字幕| 98精品国产高清在线xxxx天堂| 久久免费成人精品视频| 97香蕉久久超级碰碰高清版| 欧美不卡视频一区发布| 欧美性感美女h网站在线观看免费| 欧美成人激情视频免费观看| 91精品中国老女人| 久久中文字幕在线| 久久综合伊人77777| 亚洲欧美日韩在线高清直播| 亚洲sss综合天堂久久| 91免费综合在线| 久久成人精品电影| 亚洲午夜精品久久久久久性色|