重用的t-sql游标的起始位置?

重用的t-sql游标的起始位置?,sql,sql-server,tsql,cursor,Sql,Sql Server,Tsql,Cursor,我正在开发一个在临时表上使用游标的存储过程(我读了一些关于为什么不需要游标的内容,但在这种情况下,我相信我仍然需要使用游标) 在我的过程中,我需要一步一步地遍历表中的行两次 声明光标后,已经跨过临时表一次并关闭光标,重新打开时光标的位置是否会保持在表的末尾,还是会将其自身重新定位到初始起始位置(即:第一行之前) 或者,要重新定位光标,我必须在再次单步执行之前执行“先提取”操作吗 我是否正确地假设重新定位和重用游标的“成本”比释放和重新分配游标要低?分配和释放成本微不足道。游标的“不好”来自这样一

我正在开发一个在临时表上使用游标的存储过程(我读了一些关于为什么不需要游标的内容,但在这种情况下,我相信我仍然需要使用游标)

在我的过程中,我需要一步一步地遍历表中的行两次

声明光标后,已经跨过临时表一次并关闭光标,重新打开时光标的位置是否会保持在表的末尾,还是会将其自身重新定位到初始起始位置(即:第一行之前)

或者,要重新定位光标,我必须在再次单步执行之前执行“先提取”操作吗


我是否正确地假设重新定位和重用游标的“成本”比释放和重新分配游标要低?

分配和释放成本微不足道。游标的“不好”来自这样一个事实:您没有以最佳方式与DB交互,而不是来自创建或处理游标的任何特定开销

我不认为关闭和重新打开的光标的位置行为是有文档记录的,所以您不应该依赖它以任何给定的方式进行操作。因此,当您再次开始使用它时,您应该自己重新定位它


而且,如果没有光标,您所做的事情可能是可行的。如果我是你,我会考虑问(一个不同的)问题。p> 谢谢,昨天我在寻找我的问题的答案时,才发现为什么游标并不总是可取的原因(我是一名新毕业生,在大学里我们只学过游标…),我计划在发布任何新问题之前再多读一读,但我确实怀疑我对游标的使用可能会被取代——我只需要先更好地理解这些替代方法尽管如此,我仍然有兴趣在游标完成对记录集的迭代之后找出它的状态。我觉得奇怪的是,这还没有被记录下来。