agora inbox for pgsql-sql@postgresql.org  
help / color / mirror / Atom feed
From: James Kitambara <jameskitambara@yahoo.co.uk>
To: Sandeep Saxena <sandeep.lko@gmail.com>
Cc: pgsql-sql@postgresql.org <pgsql-sql@postgresql.org>
Subject: Re: ERROR ON INSERTING USING A CURSOR IN EDB POSTGRESQL
Date: Fri, 10 Dec 2021 15:40:41 +0000 (UTC)
Message-ID: <615924257.1194226.1639150841188@mail.yahoo.com> (raw)
In-Reply-To: <CAA3fAREzZF1J5hoBO+YmmVcvTe7Jdd9O3S9Mrk=TzTFXew_dHw@mail.gmail.com>
References: <820139578.307641.1639046195013.ref@mail.yahoo.com>
	<820139578.307641.1639046195013@mail.yahoo.com>
	<CAA3fAREzZF1J5hoBO+YmmVcvTe7Jdd9O3S9Mrk=TzTFXew_dHw@mail.gmail.com>

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 100AS $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$;

 

    On Thursday, 9 December 2021, 13:55:31 GMT+3, Sandeep Saxena <sandeep.lko@gmail.com> wrote:  
 
 Do you have commit inside cursor?
On Thu, Dec 9, 2021 at 4:06 PM James Kitambara <jameskitambara@yahoo.co.uk> wrote:


ISSUE OF CURSOR ON THE EDB POSTGRESQL

I have the table books2 below with those fields on EDBPostgreSQL.

CREATE TABLE IF NOT EXISTSpublic.books2
(

    id integer NOT NULL DEFAULTnextval('books2_id_seq'::regclass),

    title character(10) COLLATEpg_catalog."default" NOT NULL,

    amount numeric DEFAULT 0,

    CONSTRAINT books2_pkey PRIMARY KEY (id)

);

 
The table is populated with the following data





 

I want to re-insert the records from ID 8 to 11  for the values of TITLE and AMOUNT as the IDis out-increment. To accomplish this I have created the procedure named temp_insert_in_books2() to do this

The procedure does what I wanted BUT IT GIVES ME THIS ERROR MESSAGE:

ERROR:  cursor "book_cur" does not exist

CONTEXT:  edb-spl function temp_insert_in_books2() line15 at CLOSE

SQL state: 34000

HOW CAN I REMOVE THATERROR?. ALSO NOTE THAT I ALWAYS GET THIS ERROR WHEN UPDATING OR INSERTING DATA ONTHE TABLE USING CURSORS.

PLEASE CAN ANYONE ASSIST.

 
Table Data after running the procedure is described below:






  

Attachments:

  [image/jpeg] 1639046039477blob.jpg (31.8K, ../615924257.1194226.1639150841188@mail.yahoo.com/3-1639046039477blob.jpg)
  download | view image

  [image/jpeg] 1639045991057blob.jpg (23.8K, ../615924257.1194226.1639150841188@mail.yahoo.com/4-1639045991057blob.jpg)
  download | view image

view thread (6+ messages)  latest in thread

Message-ID: <615924257.1194226.1639150841188@mail.yahoo.com>
Permalink:  ../615924257.1194226.1639150841188@mail.yahoo.com/
Also on:    postgresql.org/message-id/615924257.1194226.1639150841188@mail.yahoo.com

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: jameskitambara@yahoo.co.uk, sandeep.lko@gmail.com
  Subject: Re: ERROR ON INSERTING USING A CURSOR IN EDB POSTGRESQL
  In-Reply-To: <615924257.1194226.1639150841188@mail.yahoo.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox