CREATE procedure wqnews_GetPagedWQNews (@pagesize int, @pageindex int, @docount bit) as set nocount on if(@docount=1) select count(newsid) from wqnews else begin declare @indextable table(id int identity(1,1),nid int) declare @PageLowerBound int declare @PageUpperBound int set @PageLowerBound=(@pageindex-1)*@pagesize set @PageUpperBound=@PageLowerBound+@pagesize set rowcount @PageUpperBound insert into @indextable(nid) select newsid from wqnews order by addtime desc select O.newsid,O.source,O.heading,O.addtime from wqnews O,@indextable t where O.newsid=t.nid and t.id>@PageLowerBound and t.id<=@PageUpperBound order by t.id end set nocount offGO Sql Server 的存储过程看不太懂,不知道该如何转成Oracle的写法。
它只是起一个表现层的作用
只负责显示
本身又不能承载数据,比如它负责接受 PageSize ,PageIndex,RowCount
根据这三个数据显示分页结果
至于这三个数据来源,都是数据库或者程序传入的
(@pagesize int,
@pageindex int,
@docount bit)
as
set nocount on
if(@docount=1)
select count(newsid) from wqnews
else
begin
declare @indextable table(id int identity(1,1),nid int)
declare @PageLowerBound int
declare @PageUpperBound int
set @PageLowerBound=(@pageindex-1)*@pagesize
set @PageUpperBound=@PageLowerBound+@pagesize
set rowcount @PageUpperBound
insert into @indextable(nid) select newsid from wqnews order by addtime desc
select O.newsid,O.source,O.heading,O.addtime from wqnews O,@indextable t where O.newsid=t.nid
and t.id>@PageLowerBound and t.id<=@PageUpperBound order by t.id
end
set nocount offGO
Sql Server 的存储过程看不太懂,不知道该如何转成Oracle的写法。
{
OracleConnection conn=new OracleConnection(pub.strCnn);
OracleCommand cmd=new OracleCommand(sql,conn);
OracleDataAdapter adapter=new OracleDataAdapter(cmd);
DataSet ds=new DataSet();
adapter.Fill(ds,pager.PageSize*(pager.CurrentPageIndex-1),pager.PageSize,"mfData");
DataView myView = ds.Tables["mfData"].DefaultView;
//取得记录总数
OracleCommand myCommand=conn.CreateCommand();
myCommand.CommandType = CommandType.Text;
myCommand.CommandText="select count(*) from super_log where active_flag='Y'";
conn.Open();
pager.RecordCount=Convert.ToInt32(myCommand.ExecuteOracleScalar().ToString());
//绑定数据
mfdg.DataSource=ds.Tables["mfData"];
mfdg.DataBind();
//关闭连接
conn.Close();
//动态设置用户自定义文本内容
pager.CustomInfoText="记录总数:<font color=\"blue\"><b>"+pager.RecordCount.ToString()+"</b></font>";
pager.CustomInfoText+=" 总页数:<font color=\"blue\"><b>"+pager.PageCount.ToString()+"</b></font>";
pager.CustomInfoText+=" 当前页:<font color=\"red\"><b>"+pager.CurrentPageIndex.ToString()+"</b></font>";
}我的这个方法,数据量大的时候,速度狂慢!
如果觉得真的不方便,可以自己写自定义分页。
给个例子你参考一下,不过也是SQL的存储过程,Oracle中应该也可以运行
http://blog.csdn.net/sunnystar365/archive/2005/09/28/491139.aspx