我试图弄清楚为什么我会得到一个无效的光标状态'我打开SQL客户端中的SHOWPLAN
功能时出错。
我运行的代码如下:
SET SHOWPLAN_XML ON;
Select *
From Sys.Objects
SET SHOWPLAN_XML OFF;
This is the error I get when I run this
任何帮助将不胜感激
答案 0 :(得分:0)
这应该可以解决您的错误。
SET SHOWPLAN_XML ON;
GO
Select * From Sys.Objects
GO
SET SHOWPLAN_XML OFF;
GO
答案 1 :(得分:0)
您的光标似乎处于打开状态。您需要记住DEALLOCATE光标(代码不是您问题的一部分)
DEALLOCATE {{[GLOBAL] cursor_name} | @cursor_variable_name}
由于未提供打开的游标代码,我无法告诉您要使用的参数。
我相信这会有所帮助close all cursors:
-- Declare a cursor variable to hold the cursor output variable
-- from sp_cursor_list.
DECLARE @Report CURSOR;
-- Execute sp_cursor_list into the cursor variable.
EXEC master.dbo.sp_cursor_list @cursor_return = @Report OUTPUT,
@cursor_scope = 2;
-- Fetch all the rows from the sp_cursor_list output cursor.
FETCH NEXT from @Report;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
FETCH NEXT from @Report;
END
-- Close and deallocate the cursor from sp_cursor_list.
CLOSE @Report;
DEALLOCATE @Report;
GO
最重要的是你还有另一个错误。
消息1067,级别15,状态1,行0 SET SHOWPLAN语句必须 是批次中唯一的陈述。
正如错误所示,您需要将其分解为不同的批次。 SET SHOWPLAN 必须在批处理中单独使用。有几个命令需要自己的批次
试试这个:
SET SHOWPLAN_XML ON;
GO
SELECT * FROM Sys.Objects;
GO
SET SHOWPLAN_XML OFF;
GO