利用Package实现ASP.net翻页功能

ASP.net翻页功能实现需要两部分处理:

1. Oracle DB package 处理每次得到一定行数的sql;

2. UserControl.ascx 处理换页各种事件;

 

下面一一解释其中的做法:

Package name is GRIDVIEWPAGES, and Spec is

 

CREATE OR REPLACE package BLUESKY.GridViewPages
is
  type ResultData is ref cursor;
  procedure sp_Page(p_PageSize number,          --pagesize
                  p_PageNo number,            --page index start from 1
                  p_SqlSelect varchar2,    --select statement and contain order by
                  p_SqlCount varchar2,     --get total num of recorders
                  p_OutRecordCount out number,--return recorders num
                  p_OutCursor out ResultData);
end GridViewPages;
/

 

body is:

CREATE OR REPLACE package body BLUESKY.GridViewPages
is
  procedure sp_Page(p_PageSize number,          -- pagesize
                  p_PageNo number,            --page index start from 1
                  p_SqlSelect varchar2,    --select statement and contain order by
                  p_SqlCount varchar2,     --get total num of recorders
                  p_OutRecordCount out number,--return recorders num
                  p_OutCursor out ResultData)
  as
      v_sql varchar2(8000);
      v_count number;
      v_heiRownum number;
      v_lowRownum number;
  begin
    ----get recorder num
    execute immediate p_SqlCount into v_count;
    p_OutRecordCount := v_count;
  
    v_heiRownum := p_PageNo * p_PageSize;
    v_lowRownum := v_heiRownum - p_PageSize +1;

    v_sql := 'SELECT *
              FROM (
                    SELECT A.*, rownum rn
                    FROM  ('|| p_SqlSelect ||') A
                    WHERE rownum <= '|| to_char(v_heiRownum) || '
                   ) B
              WHERE rn >= ' || to_char(v_lowRownum) ;
              --note: alias of rownum be used first is rownum name,the second is rn

    OPEN p_OutCursor FOR  v_sql;

  end sp_Page;

end GridViewPages;
/

 

PageControl.ascx :

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值