SQL 分頁儲存過程

2022-02-09 02:48:42 字數 1413 閱讀 5683

sql  分頁儲存過程

支援:多表連線查詢、group by分組查詢等。(多表連線查詢時請指定字段,不要用select *)

返回為一結果集,有乙個輸出引數為記錄總數,配合aspnetpager控制項使用絕配。

create procedure web_pager (

@rowstotal int output,            --輸出記錄總數

@tablename varchar(800),        --表名

@fieldname varchar(800),        --查詢字段

@keyname varchar(200),            --索引字段

@pagesize int,                    --每頁記錄數

@pagenow int,                    --當前頁

@stringorder varchar(200),        --排序條件

@stringwhere varchar(800)        --where條件)as

begin

declare @beginrow int

declare @endrow int

declare @templimit varchar(200)

declare @tempcount nvarchar(1000)

declare @tempmain varchar(1000)

set @beginrow = (@pagenow - 1) * @pagesize    + 1

set @endrow = @pagenow * @pagesize

set @templimit = 'rows between ' + cast(@beginrow as varchar) +' and '+cast(@endrow as varchar)

--輸出引數為總記錄數

set @tempcount = 'select @rowstotal = count(*) from (select '+@keyname+' from '+@tablename+' where '+@stringwhere+') as my_temp'

execute sp_executesql @tempcount,n'@rowstotal int output',@rowstotal output

--主查詢返回結果集

set @tempmain = 'select * from (select row_number() over ('+@stringorder+') as rows ,'+@fieldname+' from '+@tablename+' where '+@stringwhere+') as main_temp where '+@templimit

execute (@tempmain)

end

sql 儲存過程分頁

create proc myx prpagerecordset querystr nvarchar 1000 keyfield nvarchar 200 pagesize int,pagenumber int as begin declare sqltext as nvarchar 4000 dec...

SQL 儲存過程 分頁

1.俄羅斯儲存過程 的改良版 create procedure pagination1 pagesize int,頁面大小,如每頁儲存20條記錄 pageindex int 當前頁碼 as set nocount on begin declare indextable table id int id...

SQL 分頁儲存過程

create procedure splitpage sql nvarchar 4000 不帶排序語句的sql語句 page int,頁碼 recsperpage int,每頁容納的記錄數 id varchar 255 需要排序的不重複的id號 sort varchar 255 排序欄位及規則 as...