一尘不染

重用的T-SQL游标的起始位置?

sql

我正在使用在临时表上使用游标的存储过程(我已经读了一些有关为什么不希望使用游标的信息,但是在这种情况下,我相信我仍然需要使用游标)。

在我的过程中,我需要单步浏览表中的行两次。

声明了游标之后,已经走过了临时表一次并关闭了游标,那么当重新打开游标时,游标的位置会保留在表的末尾还是将其自身重新定位到初始起始位置(即:在第一个游标之前)排)?

或者,要重新定位光标,必须在再次执行之前先执行“ FETCH FIRST”操​​作吗?

我是否正确地假设执行此重新定位和重用游标的“成本”要小于取消分配和重新分配游标的“成本”?


阅读 178

收藏
2021-05-30

共1个答案

一尘不染

分配和重新分配成本微不足道。游标的“坏处”是由于您没有以最佳方式与数据库交互,而不是由于创建或处置游标而产生的任何特殊开销。

我认为没有记录已关闭和重新打开的游标位置的行为,因此您不应该依赖于它以任何给定的方式起作用。因此,当您再次开始使用它时,应该自己重新放置它。

而且,您可能正在做的事情在没有游标的情况下是可行的。如果我是您,我会考虑问(一个不同的)问题。:)

2021-05-30