一个比较实用的大数据量分页存储过程_mssql数据库教程-查字典教程网
一个比较实用的大数据量分页存储过程
一个比较实用的大数据量分页存储过程
发布时间:2016-12-29 来源:查字典编辑
摘要:createprocsp_PublicTurnPageWebSite(@TBNamenvarchar(100)='',--表名,如pinyi...

createprocsp_PublicTurnPageWebSite(

@TBNamenvarchar(100)='',--表名,如pinyin

@PageSizeint=10,--每页的记录数,默认为10

@CurPageint=1,--表示当前页1

@KeyFieldnvarchar(100)='ID',--关键字段名,默认为ID,该字段要求是表中的索引或无重复和不为空的字段

@KeyAscDescnvarchar(4)='ASC',--关键字的升、降序,默认为升序ASC,降序为DESC

@Fieldsnvarchar(500)='*',--所选择的列名,默认为全选

@Conditionnvarchar(200)='',--where条件,默认为空

@Ordernvarchar(200)=''--排序条件,默认为空

)withencryptionas

if@TBName=''

begin

raiserror('请指定表名!',11,1)

return

end

if@PageSize<=0or@CurPage<0

begin

raiserror('当前页数和每页的记录数都必须大于零!',11,1)

return

end

if@KeyAscDesc='DESC'

set@KeyAscDesc='<'

else

set@KeyAscDesc='>'

if@Condition<>''

set@Condition='where'+@Condition

declare@SQLnvarchar(2000)

set@SQL=''

if@CurPage=1

set@SQL=@SQL+'SelectTop'+cast(@PageSizeasnvarchar(20))+''+@Fields+'FROM'+@TBName+@Condition+''+@Order

else

begin

declare@iTopNumint

set@iTopNum=@PageSize*(@CurPage-1)

set@SQL=@SQL+'declare@sLastValuenvarchar(100)'+char(13)

set@SQL=@SQL+'SelectTop'+cast(@iTopNumasnvarchar(20))+'@sLastValue='+@KeyField+'FROM'+@TBName+@Condition+''+@Order+char(13)

declare@Condition2nvarchar(200)

if@Condition=''

set@Condition2='where'+@KeyField+@KeyAscDesc+'@sLastValue'

else

set@Condition2='and'+@KeyField+@KeyAscDesc+'@sLastValue'

set@SQL=@SQL+'SelectTop'+cast(@PageSizeasnvarchar(20))+''+@Fields+'FROM'+@TBName+@Condition+@Condition2+@Order

end

EXECUTEsp_executesql@SQL

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新mssql数据库学习
    热门mssql数据库学习
    编程开发子分类