SQL ルーチンでカーソルの状態が不正な場合に報告します。

例 (Microsoft SQL Server):

CREATE TABLE t(col INT);

CREATE PROCEDURE foo() AS
BEGIN
DECLARE my_cursor CURSOR FOR SELECT * FROM t;
DECLARE a INT;
FETCH my_cursor INTO a;
CLOSE my_cursor;
END;

docs.microsoft.com の CLOSE (Transact-SQL) セクションによると、CLOSE は開いているカーソルに対して発行する必要があり、宣言のみがあるカーソルやすでに閉じているカーソルには発行できません。 そのため、警告を解決するにはカーソルを開く必要があります。

CREATE PROCEDURE foo() AS
BEGIN
DECLARE my_cursor CURSOR FOR SELECT * FROM t;
DECLARE a INT;
OPEN my_cursor;
FETCH my_cursor INTO a;
CLOSE my_cursor;
END;