分页的简单配置 在上一次已经说过了
这边说说怎么在存储过程中实现分页
首先建立存储过程
参考
http://www.cnblogs.com/gisdream/archive/2011/11/16/2251687.html
基本的代码如下所示
1、在oracle的sqlplus或其他工具中运行一下pl/sql块建立存储过程
------------------------------------------------------------
--分页存储过程
------------------------------------------------------------
--创建包
create or replace package testpackage as
type test_cursor is ref cursor;
end testpackage;
/
--创建过程
create or replace procedure fenye
(
tableName in varchar2, --表名
fields in varchar2, --查询解果显示字段
wherecase in varchar2, --查询条件
pageSize in number, --一页显示记录数
pageNow in number, --当前页
orderField varchar2, --排序字段,为空表示不排序
orderFlag number, --排序标识 0:正序 1:倒序
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; --结束记录
--排序sql
v_orderSql varchar2(100):='';
v_wherecase varchar2(100):='';
begin
--执行部分
--如果orderField不为空,则进行排序,如果orderFlag=0为升序,1为降序
if orderField is not null then
if orderFlag=0 then
v_orderSql:=' order by '||orderField;
elsif orderFlag=1 then
v_orderSql:=' order by '||orderField||' desc';
else
null;
end if;
end if;
--条件判断语句
if wherecase is not null then
v_wherecase:=' where '||wherecase;
end if;
v_sql:='select * from
(select t1.* ,rownum rn from(select '|| fields ||' from '|| tableName|| v_wherecase ||' '||v_orderSql ||') t1 where rownum<='|| v_end ||')
where rn>='|| v_begin;
--把游标和sql关联
open p_cursor for v_sql;
--计算myrows和myPageCount
--组织一个sql
v_sql:='select count(*) from '|| tableName || v_wherecase || ' ' ||v_orderSql;
--执行sql,并把返回的值赋给myrows;
execute immediate v_sql into myrows;
--计算myPageCount
if mod(myrows,Pagesize)=0 then
myPageCount:=myrows/Pagesize;
else
myPageCount:=myrows/pagesize+1;
end if;
--关闭游标
--close p_cursor;
end;
/
2、.net中的oracle过程调用类
///
/// c#调用oracle的过程进行分页
/// author:sirc_ljp
/// date:2011.11.16
///
public class Paging
{
private string _connectionString;
private string _tableName;
private string _fields = "*";
private string _whercase="";
private int _pageSize=10;
private int _pageNow=1;
private string _orderField="";
private int _orderFlag = 0;
private int _myRows;
private int _myPageCount;
private DataTable _result;
///
/// 数据库连接字符串
///
public string ConnectionString
{
get { return _connectionString; }
set { _connectionString = value; }
}
///
/// 表名
///
public string TableName
{
get { return _tableName; }
set { _tableName = value; }
}
///
/// 查询结果显示字段
///
public string Fields
{
get { return _fields; }
set { _fields = value; }
}
///
/// 查询条件
///
public string Whercase
{
get { return _whercase; }
set { _whercase = value; }
}
///
/// 页显示记录数
///
public int PageSize
{
get { return _pageSize; }
set { _pageSize = value; }
}
///
/// 当前页
///
public int PageNow
{
get { return _pageNow; }
set { _pageNow = value; }
}
///
/// 排序字段,为空""表示不排序
///
public string OrderField
{
get { return _orderField; }
set { _orderField = value; }
}
///
/// 排序标识 0:正序 1:倒序
///
public int OrderFlag
{
get { return _orderFlag; }
set { _orderFlag = value; }
}
///
/// 总记录数
///
public int MyRows
{
get { return _myRows; }
}
///
/// 总分页
///
public int MyPageCount
{
get { return _myPageCount; }
}
///
/// 返回的记录集
///
public DataTable Result
{
get { return _result; }
}
public Pag