我有一个postgres函数,正在使用它来获取数据。有时它会在程序中产生一个奇怪的错误,如下所示:
Caused by: org.postgresql.util.PSQLException: ERROR: cursor "q" already in use
这是我的功能:
CREATE OR REPLACE FUNCTION myArray(domain_name varchar, val json) RETURNS varchar LANGUAGE plpgsql STABLE AS $$
DECLARE
result varchar;
isarray BOOLEAN;
q cursor for
select json_agg(blogIn(null,b.value))
from json_array_elements_text(val) b;
BEGIN
SELECT json_typeof(val) = 'array' into isarray;
if not isarray THEN
return val;
end if;
open q;
fetch q into result;
close q;
if result is null then
return val;
end if;
return result;
END;
$$;
我在使用游标后关闭了游标,但仍然给了异常。有人可以告诉我一个原因。