SQL 루틴 내 잘못된 커서 상태를 보고합니다.

예시(Microsoft SQL 서버):

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;