Re: ERROR ON INSERTING USING A CURSOR IN EDB POSTGRESQL

Поиск
Список
Период
Сортировка
От Simon Riggs
Тема Re: ERROR ON INSERTING USING A CURSOR IN EDB POSTGRESQL
Дата
Msg-id CANbhV-EWz14UTCZnJphL+o6b=aWvLpLFQi+jfFNb=bqfQBrBLg@mail.gmail.com
обсуждение исходный текст
Ответ на Re: ERROR ON INSERTING USING A CURSOR IN EDB POSTGRESQL  (James Kitambara <jameskitambara@yahoo.co.uk>)
Ответы Re: ERROR ON INSERTING USING A CURSOR IN EDB POSTGRESQL  (James Kitambara <jameskitambara@yahoo.co.uk>)
Список pgsql-sql
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 по дате отправления:

Предыдущее
От: Steve Midgley
Дата:
Сообщение: Re: 5 tables with 3 different relation cases
Следующее
От: James Kitambara
Дата:
Сообщение: Re: ERROR ON INSERTING USING A CURSOR IN EDB POSTGRESQL