create or replace package a_paging is
type ref_data is ref cursor;
procedure paging(page in number,
pageCount in number,
resultList out ref_data,
totalCount out number);
end a_paging;
create or replace package body a_paging is
procedure paging(page in number,
pageCount in number,
resultList out ref_data,
totalCount out number) is
startIndex number;
endIndex number;
begin
if page = 0 or pageCount=0
then startIndex := 1; endIndex :=5;
else
startIndex := (page - 1) * pageCount + 1;
endIndex := page * pageCount;
end if;
open resultList for select 1 from dual;
open resultList for select cons_name
from(select cons_name, rownum rn from c_cons
where rownum <= endIndex) t
where t.rn >= startIndex;
select count(1) into totalCount from test;
end;
end a_paging;
package com.test.paging;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Types;
import oracle.jdbc.driver.OracleTypes;
import org.junit.Test;
public class Paging {
@Test
public void test(){
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("", "", "");
CallableStatement cs = conn.prepareCall("{ call a_paging.paging(?,?,?,?)}");
cs.setInt(1, 1);
cs.setInt(2, 200);
cs.registerOutParameter(3, OracleTypes.CURSOR);
cs.registerOutParameter(4, Types.INTEGER);
cs.execute();
ResultSet rs = (ResultSet) cs.getObject(3);
int a = cs.getInt(4);
System.out.println(a);
while(rs.next()){
System.out.println(rs.getString(1));
}
conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}