createprocedure
[dbo
].[p_gridviewpager](
@recordtotal
int output, --
輸出記錄總數
@viewname
varchar(800), --
表名@fieldname
varchar(800) ='*
', --
查詢字段
@keyname
varchar(200) ='id
', --
索引字段
@pagesize
int=
20, --
每頁記錄數
@pageno
int=
1, --
當前頁@orderstring
varchar(200), --
排序條件
@wherestring
varchar(800) =
'1=1'--
where條件)as
begin
declare
@beginrow
intdeclare
@endrow
intdeclare
@templimit
varchar(200
)
declare
@tempcount
nvarchar(1000
)
declare
@tempmain
varchar(1000
)
--declare @timediff datetime
set nocount on
--select @timediff=getdate() --記錄時間
set@beginrow
= (@pageno
-1) *
@pagesize+1
set@endrow
=@pageno
*@pagesize
set@templimit='
rows between '+
cast(@beginrow
asvarchar) +
'and '+
cast(@endrow
asvarchar
)
--輸出引數為總記錄數
set@tempcount='
select @recordtotal = count(*) from (select '+
@keyname+'
from '+
@viewname+'
where '+
@wherestring+'
) as my_temp
'execute sp_executesql @tempcount,n'
@recordtotal int output
',@recordtotal
output
--主查詢返回結果集
set@tempmain='
select * from (select row_number() over (order by '+
@orderstring+'
) as rows ,'+
@fieldname+'
from '+
@viewname+'
where '+
@wherestring+'
) as main_temp where '+
@templimit
--print @tempmain
execute (@tempmain
)
--select datediff(ms,@timediff,getdate()) as 耗時
set nocount off
endgo
分頁儲存過程支援多表聯合
create procedure sp paging tblname varchar 255 表名 strgetfields varchar 1000 需要返回的列 fldname varchar 255 排序的欄位名 pagesize int 10,頁尺寸 pageindex int 1,頁碼 r...
高效多表分頁儲存過程,可支援多表查詢,任意排序
create procedure usp paginglarge tablenames varchar 200 表名,可以是多個表,但不能用別名 primarykey varchar 100 主鍵,可以為空,但 order為空時該值不能為空 fields varchar 4000 要取出的字段,可以...
多表查詢的儲存過程分頁
該儲存過程源程式引用 http jiny z.cnblogs.com archive 2006 04 12 373146.html,由於其中多表操作時有乙個bug,做了改進,修改的部分紅色標示,解決了 primarykey table.id 表名.主鍵 時,引數 type無法賦值,進而查詢結果為空的...