sqlserver 存储过程分页(按多条件排序)

2020-07-10 08:02:57易采站长站整理

<td><%= dt.Rows[i][“isRL”].ToString().Equals(“0”) ? “<a href=”javascript:;” onclick=”renLing(event,'”+dt.Rows[i][“RLId”].ToString()+”‘);”>认领该企业</a>” : “<font color=”red”>该企业已被认领</font>”%></td>
</tr>
<%
}
%>
</table>
</div>
<div style=”margin-left:auto; margin-right:auto; width:70%; text-align:left; font-size:9pt;”>
第 <%=PageCurrent %> 页 共 <%=RowsCount %> 条 共 <%=TotalPage%> 页
<% if (PageCurrent != 1)
{
%>
<a href=”test.aspx”>首 页</a>
<a href=”test.aspx?page=<%=PageCurrent-1 %>”>上一页</a>
<%
}
if (PageCurrent != TotalPage)
{
%>
<a href=”test.aspx?page=<%=PageCurrent+1 %>”>下一页</a>
<a href=”test.aspx?page=<%=TotalPage%>”>末 页</a>
<%
}
%>
</div>

存储过程代码:

CREATE proc [dbo].[getRecordByPage]
@TotalPage int output,–总页数
@RowsCount int output,–总条数
@PageSize int,–每页多少数据
@CurrentPage int,–当前页数
@SelectFields nvarchar(1000),–select 语句但是不包含select
@IdField nvarchar(50),–主键列
@OrderField nvarchar(50),–排序字段,如果是多个字段,除最后一个字段外,后面都要加排序条件(asc/desc),不包含order by,最后一个排序字段不用加排序条件
@OrderType nvarchar(4),–1升序,0降序
@TableName nvarchar(200),–表名
@strWhere nvarchar(300)–条件
As
Begin
declare @RecordCount float
declare @PageNum int –分页依据数
Declare @Compare nvarchar(50)–比较字段区分min或者max
Declare @Compare1 nvarchar(2) –大于号“>” 或者小于号”<“
Declare @OrderSql nvarchar(10)–排序字段
declare @Sql nvarchar(4000)
Declare @TemSql nvarchar(1000)
Declare @nRd int
declare @afterRows int
declare @tempTableName nvarchar(10)
if(@OrderType=’1′)
Begin
set @OrderSql=’ asc’
End
Else
Begin
set @OrderSql= ‘ desc’
End

if(isnull(@strWhere, ”)<>”)
Set @strWhere = @strWhere
if(@strWhere=”)
Set @strWhere=’ 1=1 ‘
Set @TemSql=’Select @RecordCount=Count(1) from ‘+@TableName +’ where ‘+@strWhere
exec sp_executesql @TemSql,N’@RecordCount float output’,@RecordCount output
Set @RowsCount=@RecordCount
Set @TotalPage= ceiling(@RecordCount/@PageSize)
if(@CurrentPage>@TotalPage)
Set @CurrentPage=@TotalPage
if(@CurrentPage<1)
Set @CurrentPage=1
if(@PageSize<1)
相关文章 大家在看