簡單表的 分頁儲存過程 (不支援多表連線)

2022-07-16 07:09:07 字數 2041 閱讀 3240

create

procedure

[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無法賦值,進而查詢結果為空的...