例 (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;