通过命运或运气,我正在致力于将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;
问题
select
语句实际上在打开游标时返回结果集吗?entity_cursor
返回空结果集吗? 1 :我知道SQL Server它们通常用于逐行执行操作。
2 :基于阅读DB2文档以及一些我的知识和才智。
3 :不幸的是,我无法完全测试DB2中的存储过程。
答案 0 :(得分:1)
第一个问题:如注释中所述,打开游标不会产生结果集,而只会产生一个(指向a的)结构,允许您使用ReentrantLock
语句或等效语句访问结果集。此外,当您开始获取记录时,结果集甚至可能无法完全实现-这取决于实际查询和各种游标选项。
第二个问题:如果您的存储过程正常(或以其他方式返回),在打开游标之前,其调用方将获得未初始化的游标结构(当您尝试访问它时将导致异常),而不是空的结果集