您当前的位置: 首页 >  sql

郭梧悠

暂无认证

  • 4浏览

    0关注

    402博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

pl/sql 过程分页显示小案例

郭梧悠 发布时间:2012-08-03 14:47:38 ,浏览量:4

:编写一个过程,要求可以输入表名,输入每页显示的记录数,输入当前页,返回总记录数,总页数,和返回的结果集                     ---------------------------------------------------------------------                      SQL>create or replace package testPackage as type test_cursor(游标名) is ref cursor(游标)                          end testPackage                      SQL>create procedure p8(table_name in varchar2,--表名                           pageSize in number,                       --当前显示的记录数                           pageNow in number,--当前页                                                                     --下面都是要返回的内容,其值在过程处理中赋予                           myrows out number,                        --总记录数                           myPageCount out number,                   --总页数                           p_cursor out testPackage.test_cursor      --返回的结果集                            ) is                          --定义sql语句                          v_sql varchar2(1000);                                                 v_begin number := (pageNow - 1)*pageSize + 1; -- 每页显示的最少数                          v_end number := pageNow * pageSize;           --每页显示的最大数                                                   bgein                             v_sql := 'select * rownum from (SQL>select a1.*,rownum rn from (select name,sal from '||table_name||')                               a1 where rownum'||v_begin||'';                                                         open p_cursor for v_sql;                                --打开一个游标,将游标和sql语句关联起来                             v_sql : = 'select  count(*) from '||table_name'';       --计算myrows和myPageCount                                                         execute immediate v_sql into  myrows ;                  --执行sql,并把返回值赋给myrows来记录总记录数                                                        if mod(myrows,pageSize)= 0 then                       --计算总页数,注意思路,很好理解                                myPageCount := myrows/Pagesiez;                             else                                myPageCount := myrows/Pagesiez + 1;                             end if                                                        close p_cursor;                                         --关闭游标                          end;                          /                       ------------------------------------------------------------------------------------------------------                       Class.forName("oracle.jdbc.driver.OracleDriver");                       Connection ct = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:                                             CallableStatement cs = ct.prepareCall("{call p8(?,?,?,?,?,?)}");                                           //给?赋值                      cs.setString(1,"myTable");                      sc.setInt(2,5);                      sc.setInt(3,1);                      //给out参数?赋值                      cs.registOutPrameter(4,oracle.jdbc.OracleTypes.INTEGER);//这侧记录总数                      cs.registOutPrameter(5,oracle.jdbc.OracleTypes.INTEGER);//注册总页数                      cs.registOutPrameter(6,oracle.jdbc.OracleTypes.CURSOR);//注册返回的结果集

                     //执行                      cs.execute();                      //得到结果集                      ResultSet rs = (ResultSet) cs.getObject(6);                                           //取出总记录数                       int rowNum = cs.getInt(4);                      //返回总页数                      int pagecount = cs.getInt(5);                      while(rs.next()){                          System.out.println(rs.getInt(1) + "--" + rs.getString(2));                      }                                          //关闭相关资源,此处略写                      ---------------------------------------------------------------------

关注
打赏
1663674776
查看更多评论
立即登录/注册

微信扫码登录

0.0369s