论坛首页 综合技术论坛

Sybase cursor的使用

浏览 4246 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-02-26   最后修改:2010-02-26

Sybase 在很多语法上面和常用的MS Sql 还有 PL Sql 存在很多不同的差异, 经常弄的我头昏脑涨。 
这两天有个需求:几十个 tbName_xx 这种形式是表需要数据更新, 参照 MS Sql 的帮助文档和网上资料自己写了个cursor。结果是非常的郁闷! 
后来几经摸索和别人的指点,弄了一个能正确执行的, 把代码贴出来供大家参考

sql代码 
  1. --第一步
  2. DECLARE cursor_a CURSOR /*声明游标*/  
  3. FOR   
  4. SELECT sDomainCode   
  5.    FROM tbOsDomain   
  6.    WHERE sDomainCode NOT IN ('CN', 'EN', 'US', ...)  
  7. ORDER BY sDomainCode  

  8. --第二步  
  9. OPEN cursor_a  /*打开游标*/ 
  10.  
  11. DECLARE @domainCode VARCHAR(11), @message VARCHAR(80), @dynaSql VARCHAR(1000)   
  12. FETCH cursor_a   
  13. INTO @domainCode  --提取游标数据
  14.   
  15. WHILE @@sqlstatus = 0   
  16.    BEGIN  
  17.       SELECT @message = "----- domainCode is : " + @domainCode   
  18.       PRINT @message
  19.       SET @dynaSql = " UPDATE tbTestData SET testCell='value_" + @domainCode
  20.       EXEC(@dynaSql) --执行动态SQL, Sybase 12 以上的版本支持使用动态SQL
  21.       --to do something.....  
  22.   
  23.       -- Get the next cur.  
  24.       FETCH cursor_a   
  25.       INTO @domainCode   
  26.    END  
  27. CLOSE cursor_a 

  28. --第三步 
  29. DEALLOCATE CURSOR cursor_a  /*删除游标*/  

 

 

   发表时间:2010-02-26   最后修改:2010-02-26
Sybase和MS sqlserver 用的都是T-SQL。 语法基本一样。
0 请登录后投票
   发表时间:2010-02-26  
跟 sql server差不多,我记得就1个状态码不同
0 请登录后投票
   发表时间:2010-03-01  
是啊,但是我就是对细节处不了解哦,,,就绕弯子了
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics