如何检查游标是否存在(打开状态)

Mad*_*ddy 36 sql t-sql sql-server sql-server-2005 sql-server-2008

如何检查光标是否打开?因为很多次我遇到错误'游标已经存在'.请让我知道如何检查光标是否已处于打开状态.

实际上我已经关闭以及最后解除分配它(CLOSE ppm_cursor; DEALLOCATE ppm_cursor;)但是我仍然得到同样的错误可能是什么原因.

Gar*_*y W 82

您可以使用CURSOR_STATUS函数来确定其状态.

IF CURSOR_STATUS('global','myCursor')>=-1
BEGIN
 DEALLOCATE myCursor
END
Run Code Online (Sandbox Code Playgroud)


Pra*_*eek 35

关闭光标,如果它是空的,则取消分配它:

IF (SELECT CURSOR_STATUS('global','myCursor')) >= -1
 BEGIN
  IF (SELECT CURSOR_STATUS('global','myCursor')) > -1
   BEGIN
    CLOSE myCursor
   END
 DEALLOCATE myCursor
END
Run Code Online (Sandbox Code Playgroud)


Muh*_*agy 5

对 Gary W 提到的内容稍加改动,添加“SELECT”:

IF (SELECT CURSOR_STATUS('global','myCursor')) >= -1
BEGIN
 DEALLOCATE myCursor
END
Run Code Online (Sandbox Code Playgroud)

http://social.msdn.microsoft.com/Forums/en/sqlgetstarted/thread/eb268010-75fd-4c04-9fe8-0bc33ccf9357

  • 应该是`IF (SELECT CURSOR_STATUS('global','myCursor')) >= -1` 注意第一个左括号的位置。 (2认同)