[數(shù)據(jù)庫] 通用分頁存儲過程第5/5頁
更新時間:2007年02月09日 00:00:00 作者:
以下這個是我自己寫的一個分頁通用存儲過程
該方法也就是上頭所提到的行計數(shù)的方式,在系統(tǒng)中使用發(fā)現(xiàn)過很多次問題,這是最終版本應(yīng)該不會再有什么算法之類的問題出現(xiàn)了
這個存儲過程的原理就是“譬如現(xiàn)在要第5頁數(shù)據(jù),每頁是16行,那么現(xiàn)在要的數(shù)據(jù)就是在前80行,并且不在原來的64行內(nèi)的”
復制代碼 代碼如下:
Create Proc proc_PageRecordset
@queryStr nvarchar(2000), --查詢語句,用來獲取要顯示的數(shù)據(jù)必須滿足的要求@keyField nvarchar (72), --主鍵
@pageSize int, --每頁的行數(shù)@pageNumber int, --第幾頁
@filter varChar(2000)='', --過濾,where后頭的語句
@order varChar(200)='' --排序方式AS
BEGIN
DECLARE @sqlText AS nvarchar(4000)
DECLARE @sqlTable AS nvarchar(4000)
DECLARE @sqlText_PageCount AS nvarchar(4000)
set @filter=replace(@filter,'#','''')
--這是最后一次所發(fā)現(xiàn)的bug,因為在排序中必須確定一個排出來的位置一樣的table,不能讓a在這次排第2,那次又排第5
if CharIndex(@keyField,@order)=0
Begin
Set @order=@order+','+@keyField
End
if (Rtrim(@filter)='')
begin
SET @sqlTable = 'SELECT TOP ' + CAST((@pageNumber + 1) * @pageSize AS varchar(30)) + ' ' + @queryStr + ' ' + @order
SET @sqlText_PageCount = 'Select Count(*) from (select ' +@queryStr+ ' ) as Table_temp'
end
else
begin
SET @sqlTable = 'SELECT TOP ' + CAST((@pageNumber + 1) * @pageSize AS varchar(30)) + ' ' + @queryStr + ' and ' + @filter + @order
SET @sqlText_PageCount = 'Select Count(*) AS MyCount from (select ' +@queryStr+ ' and ' + @filter +' ) as Table_temp'
end
--譬如現(xiàn)在要第5頁數(shù)據(jù),每頁是16行,那么現(xiàn)在要的數(shù)據(jù)就是在前80行,并且不在原來的64行內(nèi)的
SET @sqlText =
'SELECT TOP ' + CAST(@pageSize AS varchar(30)) + ' * ' +
'FROM (' + @sqlTable + ') AS tableA ' +
'WHERE ' + @keyField + ' NOT IN(SELECT TOP ' +
CAST(@pageNumber * @pageSize AS varchar(30)) + ' ' + @keyField +
' FROM (' + @sqlTable + ') AS tableB)'
EXEC (@sqlText)
exec (@sqlText_PageCount)
END
GO
相關(guān)文章
一次數(shù)據(jù)庫查詢超時優(yōu)化問題的實戰(zhàn)記錄
當MySQL服務(wù)器出現(xiàn)異常(慢),首先要考慮是否因SQL語句引起數(shù)據(jù)庫慢,下面這篇文章主要給大家介紹了一次數(shù)據(jù)庫查詢超時優(yōu)化問題的實戰(zhàn)記錄,需要的朋友可以參考下2021-10-10關(guān)于數(shù)據(jù)庫設(shè)計中主鍵問題的思考
數(shù)據(jù)庫主鍵在數(shù)據(jù)庫中占有重要地位。主鍵的選取策略決定了系統(tǒng)是否可靠、易用、高效。本文探討了數(shù)據(jù)庫設(shè)計過程當中常見的主鍵選取策略,并剖析了其做主鍵的優(yōu)缺點,提出了相應(yīng)的解決問題的方法2013-08-08解決Navicat數(shù)據(jù)庫連接成功但密碼忘記的問題
這篇文章給大家介紹了Navicat數(shù)據(jù)庫連接成功,密碼忘記如何解決,文中給大家介紹了兩種解決方法,有詳細的圖文講解,需要的朋友可以參考下2023-08-08