无码视频在线观看,99人妻,国产午夜视频,久久久久国产一级毛片高清版新婚

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

    Oracle分頁語句介紹和編寫分頁的存儲過程

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

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

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

    --使用java代碼調用這個存儲過程

    package test;
    import java.sql.*;
    public class FenYe{
    public static void main(String[] args){
    try{
    //加載數(shù)據(jù)庫驅動
    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對象
    CallableStatement cs = conn.prepareCall("{call fenye(?,?,?,?,?,?)}");
    //給前三個輸入?yún)?shù)的?賦值
    cs.setString(1,"emp");//要查詢的是emp表
    cs.setInt(2,5);//每頁顯示5條記錄
    cs.setInt(3,1);//先顯示第一頁
    //注冊總記錄數(shù)
    cs.registerOutParameter(4,Oracle.jdbc.OracleTypes.INTEGER);
    //注冊總頁數(shù)
    cs.registerOutParameter(5,Oracle.jdbc.OracleTypes.INTEGER);
    //注冊結果集
    cs.registerOutParameter(6,Oracle.jdbc.OracleTypes.CURSOR);
    //執(zhí)行存儲過程
    cs.execute();

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

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

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

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


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

    服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

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

    0371-60135900
    7*24小時客服服務熱線