Sybase分頁顯示儲存過程

2021-06-22 04:48:22 字數 1440 閱讀 9458

實現sybase分頁顯示儲存過程是我們經常會遇到的問題,下面就對sybase分頁顯示儲存過程的方法進行詳細介紹,供您參考。

建立乙個web應用,分頁瀏覽功能必不可少。這個問題是資料庫處理中十分常見的問題。經典的資料分頁方法是:ado 紀錄集分頁法,也就是利用ado自帶的分頁功能(利用游標)來實現分頁。但這種分頁方法僅適用於較小資料量的情形,因為游標本身有缺點:游標是存放在記憶體中,很費記憶體。游標一建立,就將相關的記錄鎖住,直到取消游標。游標提供了對特定集合中逐行掃瞄的手段,一般使用游標來逐行遍歷資料,根據取出資料條件的不同進行不同的操作。而對於多表和大表中定義的游標(大的資料集合)迴圈很容易使程式進入乙個漫長的等待甚至宕機。

更重要的是,對於非常大的資料模型而言,分頁檢索時,如果按照傳統的每次都載入整個資料來源的方法是非常浪費資源的。現在流行的分頁方法一般是檢索頁面大小的塊區的資料,而非檢索所有的資料,然後單步執行當前行。

最早較好地實現這種根據頁面大小和頁碼來提取資料的方法大概就是「俄羅斯儲存過程」。這個儲存過程用了游標,由於游標的侷限性,所以這個方法並沒有得到大家的普遍認可。

下面的儲存過程就是結合我們的辦公自動化例項寫的sybase分頁儲存過程:

create procedure pagination1  

(@pagesize int, --頁面大小,如每頁儲存20條記錄

@pageindex int --當前頁碼

) as

set nocount on

begin

declare @indextable table(id int identity(1,1),nid int) --定義表變數

declare @pagelowerbound int --定義此頁的底碼

declare @pageupperbound int --定義此頁的頂碼

set @pagelowerbound=(@pageindex-1)*@pagesize

set @pageupperbound=@pagelowerbound+@pagesize

set rowcount @pageupperbound

insert into @indextable(nid) select gid from tgongwen where fariqi >dateadd(day,-365,getdate()) order by fariqi desc

select o.gid,o.mid,o.title,o.fadanwei,o.fariqi from tgongwen o,@indextable t where o.gid=t.nid

and t.id>@pagelowerbound and t.id<=@pageupperbound order by t.id

end

set nocount off

reference:

儲存過程實現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 分頁儲存過程的寫法,希望可以讓您對sybase分頁儲存過程有更多的了解。create procedure sp php page qry varchar 16384 istart int,ilimit in...

通用分頁顯示儲存過程

if exists select from sysobjects where id object id testproc drop proc testproc gocreate procedure testproc tblname varchar 255 表名 strgetfields varcha...