java調用Oracle分頁預存程序

來源:互聯網
上載者:User

標籤:

Java程式

package com.test;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Types;import com.jdbc.BaseJdbcDAO;import oracle.jdbc.OracleTypes;public class Test {/*** @param args*/public static void main(String[] args) {Connection conn = BaseJdbcDAO.getConnection2("com");String sqlSel = "SELECT * FROM POSITION";String sqlCount = "SELECT COUNT(*) FROM POSITION";String sql = "{ call SP_PAGE(?,?,?,?,?,?,?) }";ResultSet rs = null;try {CallableStatement call = conn.prepareCall(sql);call.setInt(1, 20);call.setInt(2, 100);call.setString(3, sqlSel);call.setString(4, sqlCount);call.registerOutParameter(5, Types.INTEGER);call.registerOutParameter(6, Types.INTEGER);call.registerOutParameter(7, OracleTypes.CURSOR);call.execute();// 取出結果集int pageCount = call.getInt(5);//總頁數int total = call.getInt(6);//總記錄數rs = (ResultSet) call.getObject(7);//資訊列表集System.out.println("頁總數:" + pageCount);System.out.println("記錄總數:" + total);int i = 1;while (rs.next()) {System.out.println(">>" + i + "號碼:" + rs.getString(2) + "名稱:"+ rs.getString(3) + "序號:" + rs.getInt(1));i++;}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}/* 何問起 hovertree.com */

 

--建立遊標包


create or replace PACKAGE "PKG_QUERY" AStype refCursorType is REF CURSOR; --遊標類型定義,用於返回資料集END;/* 何問起 hovertree.com */

--預存程序

create or replace procedure sp_Page(p_PageSize int, --每頁記錄數p_PageNo int, --當前頁碼,從 1 開始p_SqlSelect varchar2, --查詢語句,含排序部分p_SqlCount varchar2, --擷取記錄總數的查詢語句p_pageCount out int,--總共多少頁p_OutRecordCount out int,--返回總記錄數p_OutCursor out PKG_QUERY.refCursorType)asv_sql varchar2(3000);v_count int;v_heiRownum int;v_lowRownum int;  begin  ----取記錄總數      execute immediate p_SqlCount into v_count;      p_OutRecordCount := v_count;      --計算mypageCount--    if mod(v_count,p_PageSize)=0 then        p_pageCount:=v_count/p_PageSize;    else        p_pageCount:=v_count/p_PageSize+1;    end if;         ----執行分頁查詢      v_heiRownum := p_PageNo * p_PageSize;      v_lowRownum := v_heiRownum - p_PageSize + 1;      v_sql := ‘SELECT B.* FROM (SELECT A.*, rownum rn FROM (‘|| p_SqlSelect ||‘) A WHERE rownum <= ‘|| to_char(v_heiRownum) || ‘ ) B WHERE rn >= ‘ || to_char(v_lowRownum) ;    --注意對rownum別名的使用,第一次直接用rownum,第二次一定要用別名rnOPEN p_OutCursor FOR v_sql;end sp_Page;/* 何問起 hovertree.com */

推薦:http://www.cnblogs.com/roucheng/p/3504465.html

java調用Oracle分頁預存程序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.