当前位置: 代码迷 >> Sybase >> Sybase cursor的运用
  详细解决方案

Sybase cursor的运用

热度:10306   发布时间:2013-02-26 00:00:00.0
Sybase cursor的使用

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

?

?

1 楼 icefishc 2010-02-26  
Sybase和MS sqlserver 用的都是T-SQL。 语法基本一样。
2 楼 lobbychmd 2010-02-26  
跟 sql server差不多,我记得就1个状态码不同
3 楼 yose 2010-03-01  
是啊,但是我就是对细节处不了解哦,,,就绕弯子了