六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 53|回复: 0

Java调用PL/SQL分页存储过程的代码示例

[复制链接]

升级  5%

63

主题

63

主题

63

主题

举人

Rank: 3Rank: 3

积分
215
 楼主| 发表于 2013-1-14 08:46:32 | 显示全部楼层 |阅读模式
http://wzan315.blog.163.com/blog/static/371926362012224105040773/
本文我们主要介绍了Java调用PL/SQL分页存储过程的代码示例,通过这个示例让我们来了解一下Java调用存储过程实现分页的过程,希望能够对您有所帮助。

Java调用PL/SQL分页存储过程的代码示例是本文我们主要要介绍的内容,我们首先给出了PL/SQL分页的存储过程的代码,然后定义SQL语句和字符串,最后介绍了Java调用的代码,接下来就让我们一起来了解一下这部分内容吧。

PL/SQL分页存储过程:

    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.printStackTrace();  
        }  
      }   
     }  
    }  

关于Java调用PL/SQL分页过程的代码示例就介绍到这里了,希望本次的介绍能够对您有所帮助。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表