欢迎光临
我们一直在努力

一个比较好的分页存储过程_数据库技巧

建站超值云服务器,限时71元/月

create PROCEDURE Sp_Conn_Sort
(
@tblName   varchar(255),       — 表名


@strGetFields varchar(1000) = *,  — 需要返回的列


@fldName varchar(255)=,      — 排序的字段名


@PageSize   int = 40,          — 页尺寸


@PageIndex  int = 1,           — 页码


@doCount  bit = 0,   — 返回记录总数, 非 0 值则返回


@OrderType bit = 0,  — 设置排序类型, 非 0 值则降序
@strWhere  varchar(1500)=  — 查询条件 (注意: 不要加 where)
)
AS


declare @strSQL   varchar(5000)       — 主语句


declare @strTmp   varchar(110)        — 临时变量


declare @strOrder varchar(400)        — 排序类型


 


if @doCount != 0


  begin


    if @strWhere !=


    set @strSQL = select count(*) as Total from + @tblName + where +@strWhere


    else


    set @strSQL = select count(*) as Total from + @tblName


end 


–以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况


else


begin


 


if @OrderType != 0


begin


    set @strTmp = <(select min


set @strOrder = order by + @fldName + desc


–如果@OrderType不是0,就执行降序,这句很重要!


end


else


begin


    set @strTmp = >(select max


    set @strOrder = order by + @fldName + asc


end


 


if @PageIndex = 1


begin


    if @strWhere !=   


    set @strSQL = select top + str(@PageSize) + +@strGetFields+   from + @tblName + where + @strWhere + + @strOrder


     else


     set @strSQL = select top + str(@PageSize) + +@strGetFields+   from + @tblName + + @strOrder


–如果是第一页就执行以上代码,这样会加快执行速度


end


else


begin


–以下代码赋予了@strSQL以真正执行的SQL代码


set @strSQL = select top + str(@PageSize) + +@strGetFields+   from


    + @tblName + where + @fldName + + @strTmp + (+ @fldName + ) from (select top + str((@PageIndex-1)*@PageSize) + + @fldName + from + @tblName + + @strOrder + ) as tblTmp)+ @strOrder


 


if @strWhere !=


    set @strSQL = select top + str(@PageSize) + +@strGetFields+   from


        + @tblName + where + @fldName + + @strTmp + (


        + @fldName + ) from (select top + str((@PageIndex-1)*@PageSize) +


        + @fldName + from + @tblName + where + @strWhere +


        + @strOrder + ) as tblTmp) and + @strWhere + + @strOrder


end


end  


exec (@strSQL)


—————–
如我你有更好的分页存储过程,希望能与之交流
QQ:271059875


http://www.cnblogs.com/wang123/archive/2006/08/05/468717.html


 

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 一个比较好的分页存储过程_数据库技巧
分享到: 更多 (0)