加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer 分页存储过程(1)

发布时间:2020-12-12 15:35:06 所属栏目:MsSql教程 来源:网络整理
导读:/** if exists (select * from sysobjects where name='page_sort') drop proc page_sort **/ create proc page_sort( ?@Name? nvarchar(100)='',???? --表名,如 pinyin ?@PageSize int,?????????? --每页的记录数,默认为 10 ?@CurPage int=1,?????????? --

/**
if exists (select * from sysobjects where name='page_sort')
drop proc page_sort
**/
create proc page_sort(
?@Name? nvarchar(100)='',???? --表名,如 pinyin
?@PageSize int,?????????? --每页的记录数,默认为 10
?@CurPage int=1,?????????? --表示当前页 1
?@KeyField nvarchar(100)='',???? --关键字段名,默认为 ID,该字段要求是表中的索引 或 无重复和不为空的字段
?@KeyAscDesc nvarchar(4)='',--关键字的升、降序,默认为升序 ASC,降序为 DESC
?@Fields? nvarchar(500)='*',???? --所选择的列名,默认为全选
?@Condition nvarchar(3000)='',???? --where 条件,默认为空
?@Order? nvarchar(200)=''???? --排序条件,默认为空
) with encryption as
?if @Name = ''
??? begin
??????? raiserror('请指定表名!',11,1)
??????? return
??? end
?if @PageSize <=0 or @CurPage <0
??? begin
??????? raiserror('当前页数和每页的记录数都必须大于零!',1)
??????? return
??? end

?if @KeyAscDesc = 'DESC'
? set @KeyAscDesc = '<'
?else
? set @KeyAscDesc = '>'
?if @Condition <> ''
? set @Condition = ' where ' + @Condition
?declare @SQL nvarchar(3000)
?set @SQL = ''
?if @CurPage = 1
??? set @SQL = @SQL + 'SELECT Top ' + cast(@PageSize as nvarchar(20)) + ' ' + @Fields + ' FROM ' + @Name + @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 ' + @Name + @Condition + ' ' + @Order + char(13)
? declare @Condition2 nvarchar(3000)
? 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 ' + @Name + @Condition + @Condition2 + @Order
??? end
?EXECUTE sp_executesql @SQL
go

?

?

?

调用:

exec page_sort 'venshop_sub',20,1,'sub_id','desc','*','sub_name=''zkarron''','order by sub_date desc'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读