欢迎光临
我们一直在努力

一个比较实用的大数据量分页存储过程-数据库专栏,SQL Server

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

create proc sp_publicturnpagewebsite(
 @tbname  nvarchar(100)=, –表名,如 pinyin
 @pagesize int=10,   –每页的记录数,默认为 10
 @curpage int=1,   –表示当前页 1
 @keyfield nvarchar(100)=id, –关键字段名,默认为 id,该字段要求是表中的索引 或 无重复和不为空的字段
 @keyascdesc nvarchar(4)=asc, –关键字的升、降序,默认为升序 asc , 降序为 desc
 @fields  nvarchar(500)=*, –所选择的列名,默认为全选
 @condition nvarchar(200)=, –where 条件,默认为空
 @order  nvarchar(200)= –排序条件,默认为空
) with encryption as
 if @tbname =
    begin
        raiserror(请指定表名!,11,1)
        return
    end
 if @pagesize <=0 or @curpage <0
    begin
        raiserror(当前页数和每页的记录数都必须大于零!,11,1)
        return
    end
 if @keyascdesc = desc
  set @keyascdesc = <
 else
  set @keyascdesc = >
 if @condition <>
  set @condition = where + @condition
 declare @sql nvarchar(2000)

 set @sql =
 if @curpage = 1
    set @sql = @sql + select top + cast(@pagesize as nvarchar(20)) + + @fields + from + @tbname + @condition + + @order
 else
    begin
  declare @itopnum int
  set @itopnum = @pagesize * (@curpage – 1)
  set @sql = @sql + declare @slastvalue nvarchar(100) + char(13)
  set @sql = @sql + select top + cast(@itopnum as nvarchar(20)) + @slastvalue= + @keyfield + from + @tbname + @condition + + @order + char(13)
  
  declare @condition2 nvarchar(200)
  if @condition =
     set @condition2 = where + @keyfield + @keyascdesc + @slastvalue
  else
     set @condition2 = and + @keyfield + @keyascdesc + @slastvalue
  set @sql = @sql + select top + cast(@pagesize as nvarchar(20)) + + @fields + from + @tbname + @condition + @condition2 + @order
    end
 execute sp_executesql @sql

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

相关推荐

  • 暂无文章