sybase分页存储过程的实现
创始人
2024-07-18 09:50:20
0

sybase分页存储过程应该如何实现呢?这是很多人都提到的问题,下面就为您介绍sybase分页存储过程的写法,希望可以让您对sybase分页存储过程有更多的了解。

  1. create procedure SP_PHP_PAGE @qry varchar(16384),@iStart int, @iLimit int, @sKeyFiled  varchar(32) as   
  2. /*@qry SQL语句, @iStart 开始, @iLimit 结束,@sKeyFiled 表中的主键 */  
  3. begin  
  4. declare @execsql varchar(16384)  
  5. declare @execsqltmp varchar(16384)  
  6. /*定义临时表表名*/  
  7. declare @dt varchar(10) --生成临时表的随机数  
  8. set @dt=substring(convert(varchar, rand()), 3, 10)   --一个字符型的随机数  
  9. set rowcount @iLimit     
  10.  
  11. if(@sKeyFiled is null)  
  12. begin      
  13. set @execsql = stuff(@qry,charindex('select',@qry),6,'select number(*) as sybid,')             
  14. set @execsqltmp = ' select * from #temptable' + @dt + ' where sybid>' || convert(varchar,@iStart) || ' and sybid <= ' || convert(varchar,(@iStart/@iLimit+1)*@iLimit)    
  15.  
  16. end  
  17. else  
  18. begin  
  19. set @execsql = stuff(@qry,charindex('select',@qry),6,'select number(*) as sybid,' || @sKeyFiled || ' ,@' )            
  20. set @execsql =  stuff(@execsql,charindex(',@',@execsql),charindex('from',@execsql)-charindex(',@',@execsql),'' )            
  21. set @execsqltmp = ' select '|| @sKeyFiled ||' from #temptable' + @dt + ' where sybid>' || convert(varchar,@iStart) || ' and sybid <= ' || convert(varchar,(@iStart/@iLimit+1)*@iLimit)    
  22. set @execsqltmp = stuff(@qry,charindex('where',@qry),5,' where '|| @sKeyFiled || ' in ('|| @execsqltmp ||') and ')     
  23. end  
  24. set @execsql = stuff(@execsql, charindex('from',@execsql),4,'into #temptable' + @dt + ' from')  
  25. select (@execsql) as sql, @execsqltmp as sqlTmp  
  26. set rowcount 0  
  27. end  
  28.  

调用

  1. $sSQL = " exec SP_PHP_PAGE '$sSQL',$iStart,$iLimit,'iId'";  
  2. $pRow = $this->m_hDb->GetResult ( $sSQL );  
  3. $this->m_hDb->Excute ( $pRow->sql );  
  4. $pData = $this->m_hDb->Select($pRow->sqlTmp);  

 

 

 

【编辑推荐】

活用Sybase超级用户密码

Sybase数据库修复的两种情况

Sybase数据仓库大鹏证券应用案例

Sybase数据库引擎运行方法简介

简单商讨Oracle Sybase数据库

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...