亚洲综合社区欧美综合色-欧美逼逼一区二区三区-国产老熟女高潮精品网站-国产日韩最新视频在线看

始創(chuàng)于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊(cè)有禮 登錄
  • 掛牌上市企業(yè)
  • 60秒人工響應(yīng)
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補(bǔ)償
全部產(chǎn)品
您的位置: 網(wǎng)站首頁 > 幫助中心>文章內(nèi)容

Oracle分頁語句介紹和編寫分頁的存儲(chǔ)過程

發(fā)布時(shí)間:  2012/8/26 15:42:47

--Oracle分頁語句介紹
--為每條記錄編號(hào)
select t1.*,rownum rn from (select * from emp) t1;
--取出前10條記錄
select t1.*,rownum rn from (select * from emp) t1 where rownum<=10;
--取出第6條到第10條記錄,此語句可以作為分頁的一個(gè)模板
-
 

select * from
(select t1.*,rownum rn from (select * from emp) t1 where rownum<=10)
where rn>=6;
--開始編寫分頁的過程
--1、先創(chuàng)建一個(gè)包,包中定義類型test_cursor,是個(gè)游標(biāo)
create or replace package testpackage as
type test_cursor is ref cursor;
end testpackage;
--2、編寫分頁的存儲(chǔ)過程
create or replace procedure fenye
(tableName in varchar2,
pageSize in number,--每頁最多可以顯示的記錄條數(shù)
pageNow in number,--當(dāng)前是第幾頁
myRows out number,--查詢出的記錄總共有多少條
myPageCount out number,--查詢出的記錄總共可以分多少頁
p_cursor out testpackage.test_cursor--返回查詢結(jié)果的記錄集
) is
--定義部分
--定義sql語句
v_sql varchar2(1000);
--定義兩個(gè)整數(shù)并賦值
v_begin number:=(pageNow-1)*pageSize+1;
v_end number:=pageNow*pageSize;
begin
--執(zhí)行部分
--并對(duì)員工工資按由高到低排列
v_sql:='select * from (select t1.*,rownum rn from (select * from '|| tableName
 ||' order by sal) t1 where rownum<='|| v_end ||') where rn>='|| v_begin;
open p_cursor for v_sql;
--計(jì)算myRows和myPageCount
--重新給v_sql賦值
v_sql:='select count(*) from '||tableName;
--執(zhí)行sql,并把返回的值付給myRows
execute immediate v_sql into myRows;
--計(jì)算myPageCount
if mod(myRows,pageSize)=0 then
myPageCount:=myRows/pageSize;
else
myPageCount:=myRows/pageSize+1;
end if;
--關(guān)閉游標(biāo)
--close p_cursor;
end;

--使用java代碼調(diào)用這個(gè)存儲(chǔ)過程

package test;
import java.sql.*;
public class FenYe{
public static void main(String[] args){
try{
//加載數(shù)據(jù)庫驅(qū)動(dòng)
Class.forName("Oracle.jdbc.driver.OracleDriver");
//獲取數(shù)據(jù)庫連接
Connection conn = DriverManager.getConnection(
"jdbc:Oracle:thin:@127.0.0.1:1521:ORCL","scott","tiger");
//創(chuàng)建CallableStatement對(duì)象
CallableStatement cs = conn.prepareCall("{call fenye(?,?,?,?,?,?)}");
//給前三個(gè)輸入?yún)?shù)的?賦值
cs.setString(1,"emp");//要查詢的是emp表
cs.setInt(2,5);//每頁顯示5條記錄
cs.setInt(3,1);//先顯示第一頁
//注冊(cè)總記錄數(shù)
cs.registerOutParameter(4,Oracle.jdbc.OracleTypes.INTEGER);
//注冊(cè)總頁數(shù)
cs.registerOutParameter(5,Oracle.jdbc.OracleTypes.INTEGER);
//注冊(cè)結(jié)果集
cs.registerOutParameter(6,Oracle.jdbc.OracleTypes.CURSOR);
//執(zhí)行存儲(chǔ)過程
cs.execute();

//接收返回的總記錄數(shù)
int rowNum = cs.getInt(4);
//接收返回的總頁數(shù)
int pageCount = cs.getInt(5);
//接收返回的結(jié)果集
ResultSet rs = (ResultSet)cs.getObject(6);

//打印輸出結(jié)果
System.out.println("總記錄數(shù):" + rowNum);
System.out.println("總頁數(shù):" + pageCount);
System.out.println("==========每頁顯示" +5 + "條===========");
System.out.println("==========當(dāng)前是第" +1 + "頁===========");
int i = 1;
while(rs.next()){
System.out.println("(" + (i++) +  ")編號(hào):" + rs.getInt(1) + ",姓名:" + rs.getString(2) + ",  工資:" + rs.getInt(6));
}
}catch(Exception e){
e.printStackTrace();
}
}
}

需要說明的是上面的代碼只是為了簡單演示一下調(diào)用數(shù)據(jù)庫中的分頁存儲(chǔ)過程,所以對(duì)數(shù)據(jù)庫資源的連接和關(guān)閉作優(yōu)化(甚至沒有關(guān)閉連接,關(guān)閉結(jié)果集等)。

實(shí)際開發(fā)中是必須關(guān)閉和釋放數(shù)據(jù)庫資源的


本文出自:億恩科技【1tcdy.com】

服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經(jīng)營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經(jīng)營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經(jīng)營性ICP/ISP證:贛B2-20080012
  • 服務(wù)器/云主機(jī) 24小時(shí)售后服務(wù)電話:0371-60135900
  • 虛擬主機(jī)/智能建站 24小時(shí)售后服務(wù)電話:0371-60135900
  • 專注服務(wù)器托管17年
    掃掃關(guān)注-微信公眾號(hào)
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號(hào)總部企業(yè)基地億恩大廈  法律顧問:河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號(hào)
      1
     
     
     
     

    0371-60135900
    7*24小時(shí)客服服務(wù)熱線