Re: ERROR ON INSERTING USING A CURSOR IN EDB POSTGRESQL - Mailing list pgsql-sql

From James Kitambara
Subject Re: ERROR ON INSERTING USING A CURSOR IN EDB POSTGRESQL
Date
Msg-id 1815841634.427016.1639495323025@mail.yahoo.com
Whole thread Raw
In response to Re: ERROR ON INSERTING USING A CURSOR IN EDB POSTGRESQL  (Simon Riggs <simon.riggs@enterprisedb.com>)
List pgsql-sql
Thank you Mr. Simon for your comment I will try that and see the results.

Kindly Regards,
James Kitambara


On Tuesday, 14 December 2021, 13:59:01 GMT+3, Simon Riggs <simon.riggs@enterprisedb.com> wrote:


On Fri, 10 Dec 2021 at 15:40, James Kitambara

<jameskitambara@yahoo.co.uk> wrote:
>
> There is no COMMIT in the loop for processing cursor data.
>
> Sorry I forget to share the procedure on my first email:
>
> Here is a procedure:
> -------------------------------------------------------
>
> CREATE OR REPLACE PROCEDURE public.temp_insert_in_books2(
> )
> LANGUAGE 'edbspl'
>    SECURITY DEFINER VOLATILE PARALLEL UNSAFE
>    COST 100
> AS $BODY$
>    --v_id        INTEGER;
>    v_title      CHAR(10);
> v_amount NUMERIC;
>    CURSOR book_cur IS
>        SELECT title, amount FROM books2 WHERE id >=8;
> BEGIN
>    OPEN book_cur;
>    LOOP
>        FETCH book_cur INTO v_title, v_amount;
>        EXIT WHEN book_cur%NOTFOUND;
> INSERT INTO books2 (title, amount) VALUES (v_title, v_amount);
>    END LOOP;
> COMMIT;
>    CLOSE book_cur;
> END
> $BODY$;


"Normally, cursors are automatically closed at transaction commit."
https://www.postgresql.org/docs/devel/plpgsql-transactions.html

So the explicit CLOSE is not needed, if you have the COMMIT.

But then why have the COMMIT? The transaction will commit by default,
so I would remove that.

--
Simon Riggs                http://www.EnterpriseDB.com/



pgsql-sql by date:

Previous
From: Simon Riggs
Date:
Subject: Re: ERROR ON INSERTING USING A CURSOR IN EDB POSTGRESQL
Next
From: hubert depesz lubaczewski
Date:
Subject: Re: ERROR ON INSERTING USING A CURSOR IN EDB POSTGRESQL