一個(gè)比較實(shí)用的大數(shù)據(jù)量分頁存儲過程
更新時(shí)間:2006年08月24日 00:00:00 作者:
create proc sp_PublicTurnPageWebSite(
@TBName nvarchar(100)='', --表名,如 pinyin
@PageSize int=10, --每頁的記錄數(shù),默認(rèn)為 10
@CurPage int=1, --表示當(dāng)前頁 1
@KeyField nvarchar(100)='ID', --關(guān)鍵字段名,默認(rèn)為 ID,該字段要求是表中的索引 或 無重復(fù)和不為空的字段
@KeyAscDesc nvarchar(4)='ASC', --關(guān)鍵字的升、降序,默認(rèn)為升序 ASC , 降序?yàn)?nbsp;DESC
@Fields nvarchar(500)='*', --所選擇的列名,默認(rèn)為全選
@Condition nvarchar(200)='', --where 條件,默認(rèn)為空
@Order nvarchar(200)='' --排序條件,默認(rèn)為空
) with encryption as
if @TBName = ''
begin
raiserror('請指定表名!',11,1)
return
end
if @PageSize <=0 or @CurPage <0
begin
raiserror('當(dāng)前頁數(shù)和每頁的記錄數(shù)都必須大于零!',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
@TBName nvarchar(100)='', --表名,如 pinyin
@PageSize int=10, --每頁的記錄數(shù),默認(rèn)為 10
@CurPage int=1, --表示當(dāng)前頁 1
@KeyField nvarchar(100)='ID', --關(guān)鍵字段名,默認(rèn)為 ID,該字段要求是表中的索引 或 無重復(fù)和不為空的字段
@KeyAscDesc nvarchar(4)='ASC', --關(guān)鍵字的升、降序,默認(rèn)為升序 ASC , 降序?yàn)?nbsp;DESC
@Fields nvarchar(500)='*', --所選擇的列名,默認(rèn)為全選
@Condition nvarchar(200)='', --where 條件,默認(rèn)為空
@Order nvarchar(200)='' --排序條件,默認(rèn)為空
) with encryption as
if @TBName = ''
begin
raiserror('請指定表名!',11,1)
return
end
if @PageSize <=0 or @CurPage <0
begin
raiserror('當(dāng)前頁數(shù)和每頁的記錄數(shù)都必須大于零!',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
相關(guān)文章
sql server Bulk Insert命令詳細(xì)
這篇文章主要介紹了sql server Bulk Insert命令詳細(xì) ,需要的朋友可以參考下2015-08-08
SQL SERVER修改函數(shù)名容易引發(fā)的問題分析
這篇文章主要介紹了SQL SERVER修改函數(shù)名容易引發(fā)的問題分析的相關(guān)資料,需要的朋友可以參考下2016-02-02
SQL Server一個(gè)字符串拆分多行顯示或者多行數(shù)據(jù)合并成一個(gè)字符串
這篇文章介紹了SQL Server一個(gè)字符串拆分多行顯示或者多行數(shù)據(jù)合并成一個(gè)字符串的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
sqlServer實(shí)現(xiàn)分頁查詢的三種方式
在SqlServer中分頁查詢是經(jīng)常用到的查詢語句,一個(gè)好的分頁查詢語句,不能將代碼省略,下面這篇文章主要給大家介紹了關(guān)于sqlServer實(shí)現(xiàn)分頁查詢的三種方式,需要的朋友可以參考下2023-03-03
基于Python的SQL Server數(shù)據(jù)庫實(shí)現(xiàn)對象同步輕量級
這篇文章主要介紹了基于Python的SQL Server數(shù)據(jù)庫對象同步輕量級實(shí)現(xiàn)方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06
SQLServer常見數(shù)學(xué)函數(shù)梳理總結(jié)
這篇文章主要為大家介紹了SQLServer常見數(shù)學(xué)函數(shù)梳理總結(jié)分享,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
數(shù)據(jù)庫Left join , Right Join, Inner Join 的相關(guān)內(nèi)容,非常實(shí)用
Left join , Right Join, Inner Join 的相關(guān)內(nèi)容,非常實(shí)用2009-07-07

