Postgres函数从已经使用的Java代码“游标” q中抛出异常”

时间:2018-11-28 11:14:20

标签: postgresql plpgsql postgresql-9.5 database-cursor

我有一个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;
$$;

我在使用游标后关闭了游标,但仍然给了异常。有人可以告诉我一个原因。

0 个答案:

没有答案