示例(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,并且不允许对仅声明或已经关闭的光标执行 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;