java调用PLSQL分页过程.doc
文本预览下载声明
java调用PLSQL分页过程
在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,更多Java学习,请搜索疯狂Java;
--PLSQL分頁過程
create or replace procedure fenye
(tableName in varchar2, --表名
page_size in number, --每頁顯示記錄數
pageNow in number, --當前頁
myrows out number, -- 總記錄數
myPageCount out number, --總頁數
my_cursor out my_new_pack.test_cursor --返回的結果集
)is
--定義SQL語句 字符串
v_sql varchar2(1000);
v_begin number := (pageNow-1)*page_size+1;
v_end number := pageNow*page_size;
begin
v_sql := select * from (select t1.*,rownum rn from (select * from ||tableName
||)t1 where rownum=||v_end|| )where rn=||v_begin;
open my_cursor for v_sql;
v_sql :=select count(*) from || tableName;
execute immediate v_sql into myrows;
if mod(myrows,page_size) =0 then
myPageCount := myrows/page_size;
else myPageCount := myrows/page_size+1;
end if;
end;
JAVA調用代碼:
import java.sql.*;
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection conn = null;
CallableStatement cs = null;
ResultSet rs =null;
try{
Class.forName(oracle.jdbc.driver.OracleDriver);
conn = DriverManager.getConnection
(jdbc:oracle:thin:@127.0.0.1:1521:kelvin111G2,system,MANAGER);
cs = conn.prepareCall({call fenye(?,?,?,?,?,?)});
cs.setString(1, scott.emp);
cs.setInt(2, 5);
cs.setInt(3, 2);
cs.registerOutParameter(4,oracle.jdbc.OracleTypes.INTEGER);
cs.registerOutParameter(5,oracle.jdbc.OracleTypes.INTEGER);
cs.registerOutParameter(6,oracle.jdbc.OracleTypes.CURSOR);
cs.execute();
System.out.println(總記錄數為+cs.getInt(4));
System.out.println(總頁數+cs.getInt(5));
rs = (ResultSet)cs.getObject(6);
while(rs.next()){
System.out.println(rs.getInt(1)+===+rs.getString(2)+===+rs.getString(3));
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
rs.close();
cs.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printSt
显示全部