该DB2游标是一个循环吗?

时间:2018-10-19 13:43:53

标签: sql-server tsql db2 cursor

通过命运或运气,我正在致力于将DB2存储过程转换为SQL Server存储过程。

在DB2中我不能完全理解的一件事是游标 1 。通过查看并阅读一些文档,看来这只是一个选择语句。

-- DB2 stored procedure code
declare entity_cursor cursor with return for
select *
from TableName;

...
--a lot more cursors like above, and some other code
...

open entity_cursor;

问题

  1. 我是否根据我的假设 2 纠正了这只是一个select语句实际上在打开游标时返回结果集吗?
  2. 如果在打开光标之前 发生错误 3 ,SP会为entity_cursor返回空结果集吗?

1 :我知道SQL Server它们通常用于逐行执行操作。
2 :基于阅读DB2文档以及一些我的知识和才智。
3 :不幸的是,我无法完全测试DB2中的存储过程。

1 个答案:

答案 0 :(得分:1)

第一个问题:如注释中所述,打开游标不会产生结果集,而只会产生一个(指向a的)结构,允许您使用ReentrantLock语句或等效语句访问结果集。此外,当您开始获取记录时,结果集甚至可能无法完全实现-这取决于实际查询和各种游标选项。

第二个问题:如果您的存储过程正常(或以其他方式返回),在打开游标之前,其调用方将获得未初始化的游标结构(当您尝试访问它时将导致异常),而不是空的结果集