sybase分頁的實現

2021-08-25 01:15:49 字數 1866 閱讀 3361

create procedure splitpage_sybase @qry varchar(16384),@ipage int,

@num int,@maxpages int = 5000 as

/*@qry sql

語句, @ipage

頁數, @num

每頁記錄條數, @maxpages

最大查詢頁數*/

begin

declare @rcount int

declare @execsql varchar(16384)

if @ipage > @maxpages

begin

select '

輸入頁數[' || convert(varchar,@ipage) || ']

大於最大查詢頁數['

|| convert (varchar,@maxpages) ||']'

return

endselect @rcount=@ipage*@num

set rowcount @rcount --

將查詢語句的select

替換成select sybid=identity(12),

set @execsql = stuff(@qry,charindex('select',@qry),6,'select sybid=identity(12),') --

將查詢語句的from

替換成into #temptable1 from

,先將查詢結果存放到臨時表#temptable1

set @execsql = stuff(@execsql, charindex('from',@execsql),4,'into #temptable1 from') --

重組sql

語句,分頁的核心控制處

set @execsql = @execsql || ' select * from #temptable1 where sybid >'

|| convert(varchar,(@ipage-1)*@num) || ' and sybid <= '

|| convert(varchar,@ipage*@num)

execute (@execsql)

set rowcount 0

end執行儲存過程splitpage_sybase

即可。

exec splitpage_sybase 『sql

查詢語句』,1,100,1000

實現原理: 1)

將原始sql

查詢語句的select

,替換成select sybid=identity(12),

目的是引入分頁的記錄數控制值; 2)

將原始sql

查詢語句的from

,替換成into #temptable1 from

,目的是將查詢結果存入臨時表#temptable1;

3)重組原始sql

查詢語句,加上' select * from #temptable1 where sybid >'

|| convert(varchar,(@ipage-1)*@num)

|| ' and sybid <= '

|| convert(varchar,@ipage*@num)

,實現真正的分頁。

注意事項: 1

)由於該分頁實現是操作臨時表#temptable1

核心欄位sybid

實現的,而sybase

資料庫一張資料表只能有乙個identity

字段,因此原始查詢結果中如果包含identity

欄位就會有問題。如遇到原始查詢結果中包含identity

字段,那麼須將改欄位convert

成其它型別。

sybase分頁儲存過程的實現

sybase分頁儲存過程應該如何實現呢?這是很多人都提到的問題,下面就為您介紹 sybase 分頁儲存過程的寫法,希望可以讓您對sybase分頁儲存過程有更多的了解。create procedure sp php page qry varchar 16384 istart int,ilimit in...

儲存過程實現sybase分頁

create procedure test p ipage int,num int as ipage 頁碼,num 每頁的記錄數 begin declare maxpages int,rcount int maxpages 最大頁碼 if ipage 100 select maxpages ceil...

Sybase分頁顯示儲存過程

實現sybase分頁顯示儲存過程是我們經常會遇到的問題,下面就對sybase分頁顯示儲存過程的方法進行詳細介紹,供您參考。建立乙個web應用,分頁瀏覽功能必不可少。這個問題是資料庫處理中十分常見的問題。經典的資料分頁方法是 ado 紀錄集分頁法,也就是利用ado自帶的分頁功能 利用游標 來實現分頁。...