我正在研究一个在临时表上使用游标的存储过程(我已经阅读了一些关于为什么游标是不合需要的,但在这种情况下我相信我仍然需要使用游标)。
在我的程序中,我需要两次遍历表格的行。
声明光标后,已经逐步通过临时表并关闭光标,当重新打开时光标的位置是否保留在表的末尾,或者是否将其自身重新定位到初始起始位置(即:在第一行之前)?
或者,要重新定位光标,我必须在再次单步执行之前先执行“FETCH FIRST”吗?
我是否正确地假设执行此重新定位并重新使用游标的“成本”将少于取消分配并重新分配游标?
答案 0 :(得分:1)
分配和解除分配成本微不足道。游标的“不良”来自这样一个事实,即您不是以最佳方式与DB交互,而是来自创建或处理游标的任何特定开销。
我认为关闭和重新打开游标的位置行为不会被记录,所以你不应该依赖它以任何给定的方式行事。所以,当你再次开始使用它时,你应该自己重新定位它。
并且,如果没有光标,你所做的事情可能是可行的。如果我是你,我会考虑提出(一个不同的)与此相关的问题。 :)