/*
名稱:spall_returnrows
輸入:輸出:
呼叫:exec spall_returnrows 'select * from 表名', 頁號, 返回記錄數, '主鍵', '排序字段'
spall_returnrows 'select * from all_categories',2,10,'[id]','[id]'
說明:[百萬級]通用儲存過程.分頁儲存過程..返回指定返回條數、指定頁數的記錄
*/create procedure dbo.spall_returnrows
(@sql nvarchar(4000),
@page int,
@recsperpage int,
@id varchar(255),
@sort varchar(255))as
declare @str nvarchar(4000)
set @str='select top '+cast(@recsperpage as varchar(20))+' * from ('+@sql+'
) t where t.'+@id+'
not in
(select top '+cast((@recsperpage*(@page-1)) as varchar(20))+' '+@id+'
from ('+@sql+'
) t9 order by '+@sort+'
) order by '+@sort
print @str
exec sp_executesql @str
go/*
名稱:spall_deletenoneunique
輸入:要查詢的表名和字段列表
輸出:呼叫:
說明:實現千萬級資料的分頁顯示!--可以在5秒內獲取1448萬條記錄裡的第1200頁的100條記錄,雄不?
*/create procedure getrecordfrompage
@tblname varchar(255), -- 表名
@fldname varchar(255), -- 欄位名
@pagesize int = 10, -- 頁尺寸
@pageindex int = 1, -- 頁碼
@iscount bit = 0, -- 返回記錄總數, 非 0 值則返回
@ordertype bit = 0, -- 設定排序型別, 非 0 值則降序
@strwhere varchar(1000) = '' -- 查詢條件 (注意: 不要加 where)
asdeclare @strsql varchar(6000) -- 主語句
declare @strtmp varchar(100) -- 臨時變數
declare @strorder varchar(400) -- 排序型別
if @ordertype != 0
begin
set @strtmp = "<(select min"
set @strorder = " order by [" + @fldname +"] desc"
endelse
begin
set @strtmp = ">(select max"
set @strorder = " order by [" + @fldname +"] asc"
endset @strsql = "select top " + str(@pagesize) + " * from ["
+ @tblname + "] where [" + @fldname + "]" + @strtmp + "(["
+ @fldname + "]) from (select top " + str((@pageindex-1)*@pagesize) + " ["
+ @fldname + "] from [" + @tblname + "]" + @strorder + ") as tbltmp)"
+ @strorder
if @strwhere != ''
set @strsql = "select top " + str(@pagesize) + " * from ["
+ @tblname + "] where [" + @fldname + "]" + @strtmp + "(["
+ @fldname + "]) from (select top " + str((@pageindex-1)*@pagesize) + " ["
+ @fldname + "] from [" + @tblname + "] where " + @strwhere + " "
+ @strorder + ") as tbltmp) and " + @strwhere + " " + @strorder
if @pageindex = 1
begin
set @strtmp = ""
if @strwhere != ''
set @strtmp = " where " + @strwhere
set @strsql = "select top " + str(@pagesize) + " * from ["
+ @tblname + "]" + @strtmp + " " + @strorder
endif @iscount != 0
set @strsql = "select count(*) as total from [" + @tblname + "]"
exec (@strsql)
go
通用分頁儲存過程
create procedure sp page strtable varchar 50 表名 strcolumn varchar 50 按該列來進行分頁 intcoltype int,strcolumn列的型別,0 數字型別,1 字元型別,2 日期時間型別 intorder bit,排序,0 順序...
通用分頁儲存過程
set quoted identifier on goset ansi nulls off go declare p1 int set p1 null exec sp pageview tbname n v question list fieldkey n id pagecurrent 3,page...
通用分頁儲存過程
通用分頁儲存過程 create proc commonpagination columns varchar 500 要顯示的列名,用逗號隔開 tablename varchar 100 要查詢的表名 ordercolumnname varchar 100 排序的列名 order varchar 50...