sybase分頁存儲過程的實(shí)現(xiàn)
作者:佚名 
  分頁是使用sybase數(shù)據(jù)庫時很常用的功能,下文對sybase分頁的存儲過程寫法作了詳細(xì)的介紹個,供您參考學(xué)習(xí)之用。
 sybase分頁存儲過程應(yīng)該如何實(shí)現(xiàn)呢?這是很多人都提到的問題,下面就為您介紹sybase分頁存儲過程的寫法,希望可以讓您對sybase分頁存儲過程有更多的了解。
- create procedure SP_PHP_PAGE @qry varchar(16384),@iStart int, @iLimit int, @sKeyFiled varchar(32) as
 - /*@qry SQL語句, @iStart 開始, @iLimit 結(jié)束,@sKeyFiled 表中的主鍵 */
 - begin
 - declare @execsql varchar(16384)
 - declare @execsqltmp varchar(16384)
 - /*定義臨時表表名*/
 - declare @dt varchar(10) --生成臨時表的隨機(jī)數(shù)
 - set @dt=substring(convert(varchar, rand()), 3, 10) --一個字符型的隨機(jī)數(shù)
 - set rowcount @iLimit
 - if(@sKeyFiled is null)
 - begin
 - set @execsql = stuff(@qry,charindex('select',@qry),6,'select number(*) as sybid,')
 - set @execsqltmp = ' select * from #temptable' + @dt + ' where sybid>' || convert(varchar,@iStart) || ' and sybid <= ' || convert(varchar,(@iStart/@iLimit+1)*@iLimit)
 - end
 - else
 - begin
 - set @execsql = stuff(@qry,charindex('select',@qry),6,'select number(*) as sybid,' || @sKeyFiled || ' ,@' )
 - set @execsql = stuff(@execsql,charindex(',@',@execsql),charindex('from',@execsql)-charindex(',@',@execsql),'' )
 - set @execsqltmp = ' select '|| @sKeyFiled ||' from #temptable' + @dt + ' where sybid>' || convert(varchar,@iStart) || ' and sybid <= ' || convert(varchar,(@iStart/@iLimit+1)*@iLimit)
 - set @execsqltmp = stuff(@qry,charindex('where',@qry),5,' where '|| @sKeyFiled || ' in ('|| @execsqltmp ||') and ')
 - end
 - set @execsql = stuff(@execsql, charindex('from',@execsql),4,'into #temptable' + @dt + ' from')
 - select (@execsql) as sql, @execsqltmp as sqlTmp
 - set rowcount 0
 - end
 
調(diào)用
- $sSQL = " exec SP_PHP_PAGE '$sSQL',$iStart,$iLimit,'iId'";
 - $pRow = $this->m_hDb->GetResult ( $sSQL );
 - $this->m_hDb->Excute ( $pRow->sql );
 - $pData = $this->m_hDb->Select($pRow->sqlTmp);
 
【編輯推薦】
Sybase數(shù)據(jù)倉庫大鵬證券應(yīng)用案例
責(zé)任編輯:段燃 
                    來源:
                    互聯(lián)網(wǎng)
 














 
 
 
 
 
 
 