From: | Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com> |
---|---|
To: | PetSerAl <petseral(at)gmail(dot)com>, pgsql-general(at)lists(dot)postgresql(dot)org |
Subject: | Re: Get cursor name for invalid_cursor_name error |
Date: | 2024-10-07 15:27:28 |
Message-ID: | 72db04f3-d064-44f6-9a55-dfdcb88b0937@aklaver.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 10/7/24 08:15, PetSerAl wrote:
> How to reliable get cursor name which cause invalid_cursor_name error?
>
> postgres=# CREATE FUNCTION value_from_cursor_unsafe(cursor_name text)
> RETURNS integer
> postgres-# STRICT LANGUAGE plpgsql
> postgres-# AS $$
> postgres$# DECLARE
> postgres$# cursor CONSTANT refcursor NOT NULL := cursor_name;
> postgres$# result integer;
> postgres$# BEGIN
> postgres$# FETCH FIRST FROM cursor INTO result;
> postgres$# return result;
> postgres$# END
> postgres$# $$;
> CREATE FUNCTION
> postgres=# CREATE FUNCTION value_from_cursor_safe(cursor_name text)
> RETURNS integer
> postgres-# STRICT LANGUAGE plpgsql
> postgres-# AS $$
> postgres$# DECLARE
> postgres$# result integer;
> postgres$# BEGIN
> postgres$# BEGIN
> postgres$# result := value_from_cursor_unsafe(cursor_name);
> postgres$# EXCEPTION
> postgres$# WHEN invalid_cursor_name THEN
> postgres$# RAISE INFO '%', SQLERRM;
> postgres$# END;
> postgres$# return result;
> postgres$# END
> postgres$# $$;
> CREATE FUNCTION
> postgres=# SELECT value_from_cursor_safe('asd'); -- case 1
> INFO: cursor "asd" does not exist
> value_from_cursor_safe
> ------------------------
FYI, if you do \ef value_from_cursor_unsafe the function definition will
appear in an editor and from there you can copy and paste to make the
output easier to follow.
--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com
From | Date | Subject | |
---|---|---|---|
Next Message | Adrian Klaver | 2024-10-07 15:44:50 | Re: libpq5 error |
Previous Message | PetSerAl | 2024-10-07 15:15:48 | Get cursor name for invalid_cursor_name error |