天天看點

mysql分頁存儲過程 分頁查詢語句_分頁存儲過程(用存儲過程實作資料庫的分頁代碼)...

用存儲過程實作資料庫的分頁代碼,加快頁面執行速度。具體的大家可以測試下。

--*******************************************************

--* 分頁存儲過程 *

--* 撒哈拉大森林 *

--* 2010-6-28 *

--*******************************************************

if exists(select * from sysobjects where type='P' and name=N'P_Paging')

drop procedure P_Paging

go

create procedure P_Paging

@SqlStr nvarchar(4000), --查詢字元串

@CurrentPage int, --第N頁

@PageSize int --每頁行數

as

set nocount on

declare @P1 int, --P1是遊标的id

@rowcount int

exec sp_cursoropen @P1 output,@SqlStr,@scrollopt=1,@ccopt=1,@[email protected] output

select ceiling(1.0*@rowcount/@PageSize) as 總頁數--,@rowcount as 總行數,@CurrentPage as 目前頁

set @CurrentPage=(@CurrentPage-1)*@PageSize+1

exec sp_cursorfetch @P1,16,@CurrentPage,@PageSize

exec sp_cursorclose @P1

set nocount off

go

----建立測試表

--if exists(select * from sysobjects where type='U' and name=N'Test_Students')

-- drop table Test_Students

--go

--create table Test_Students(

-- id int IDENTITY(1,1) not null,

-- name nvarchar(100) not null

--)

--

----建立測試資料

--declare @i int

--set @i = 100000

--while @i>0

-- begin

-- insert into Test_Students values('姓名')

-- set @i = @i - 1

-- end

--

----執行存儲過程

--exec P_Paging 'select * from Test_Students order by id',100,100 --執行

--

----删除測試表

--if exists(select * from sysobjects where type='U' and name=N'Test_Students')

-- drop table Test_Students

--go