在SQL Server
中,我使用以下SQL查找打开的游标并将其关闭在“ catch”块中。
IF EXISTS(SELECT 1 FROM sys.dm_exec_cursors(@@SPID) WHERE [name] = 'Crsr_IDs' AND IS_OPEN = 1)
BEGIN
CLOSE Crsr_IDs
DEALLOCATE Crsr_IDs
END
以类似的方式如何在Postgres
中的EXCEPTION块中找到具有特定名称的打开游标并将其关闭?
答案 0 :(得分:1)
您可以将pg_cursors
表与打开的游标一起使用:
IF EXISTS(SELECT * FROM pg_cursors WHERE name = 'Crsr_IDs) THEN
CLOSE Crsr_IDs;
END IF;
但是通常没有必要-如果在受保护的块BEGIN EXCEPTION WHEN END
中打开了光标,则异常处理程序会自动关闭打开的光标。
答案 1 :(得分:1)
您可以使用pg_cursors
目录在会话中查询打开的游标,但是请注意,某些游标可能已被系统打开。
通常,您使用CLOSE ALL
关闭所有打开的游标。