欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Sybase cursor的使用 SybaseSQLSQL Server 

程序员文章站 2024-03-16 08:00:27
...

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  /*删除游标*/