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

时间:2010-05-26 00:02:14

标签: sql sql-server tsql cursor

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

在我的程序中,我需要两次遍历表格的行。

声明光标后,已经逐步通过临时表并关闭光标,当重新打开时光标的位置是否保留在表的末尾,或者是否将其自身重新定位到初始起始位置(即:在第一行之前)?

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

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

1 个答案:

答案 0 :(得分:1)

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

我认为关闭和重新打开游标的位置行为不会被记录,所以你不应该依赖它以任何给定的方式行事。所以,当你再次开始使用它时,你应该自己重新定位它。

并且,如果没有光标,你所做的事情可能是可行的。如果我是你,我会考虑提出(一个不同的)与此相关的问题。 :)