Re: Reg: BULK COLLECT - Mailing list pgsql-general

From Adrian Klaver
Subject Re: Reg: BULK COLLECT
Date
Msg-id 55632956.2000702@aklaver.com
Whole thread Raw
In response to Reg: BULK COLLECT  (Medhavi Mahansaria <medhavi.mahansaria@tcs.com>)
List pgsql-general
On 05/25/2015 05:24 AM, Medhavi Mahansaria wrote:
> Hello,
>
> I am porting my application from Oracle to PostgreSQL.
>
> We are using BULK COLLECT functionality of oracle.
> How can i change the 'BULK COLLECT' fetch of the data from the cursor to
> make if compatible for pg/plsql?

See here:

http://www.postgresql.org/docs/9.4/interactive/plpgsql-control-structures.html#PLPGSQL-RECORDS-ITERATING

>
> A small example is as below (This is just an example and the query is
> much more complex which returns huge amount of data)
>
>
> */CREATE OR REPLACE FUNCTION abc() RETURNS VOID AS $body$/*
>
> */DECLARE/*
> */l_data b%ROWTYPE;/*
>
> */POPULATE_STATS CURSOR IS/*
> */(/*
> */SELECT * from a/*
> */)/*
> */;                // query returning a huge amount of data/*
>
> */BEGIN/*
> */      OPEN POPULATE_STATS;/*
> */      LOOP/*
> */  FETCH POPULATE_STATS BULK COLLECT INTO l_data LIMIT 1000;/*
> */        IF POPULATE_STATS%ROWCOUNT > 0/*
> */        THEN/*
> */        FORALL i IN 1..l_data.COUNT/*
> */      INSERT INTO b VALUES l_data(i);/*
> */        END IF;/*
> */      IF NOT FOUND THEN EXIT; END IF; /*
> */      END LOOP;/*
> */      CLOSE POPULATE_STATS;/*
> */EXCEPTION/*
> */      WHEN OTHERS THEN/*
> */      CODE := SQLSTATE;/*
> */      MSG := SQLERRM;/*
> */     INSERT INTO tracker VALUES (CODE,MSG,LOCALTIMESTAMP);/*
> */      RAISE NOTICE 'SQLERRM';/*
> */      RAISE NOTICE '%', SQLSTATE;/*
> */      RAISE NOTICE '%', MSG;/*
> */END;
> /*
> */$body$/*
> */LANGUAGE PLPGSQL;/*
>
> How can i change the 'BULK COLLECT' fetch of the data from the cursor to
> make if compatible for pg/plsql?
>
>
> Thanks & Regards
> Medhavi Mahansaria
> Mailto: medhavi.mahansaria@tcs.com
>



--
Adrian Klaver
adrian.klaver@aklaver.com


pgsql-general by date:

Previous
From: Allan Kamau
Date:
Subject: Re: Reg: BULK COLLECT
Next
From: Piotr Gasidło
Date:
Subject: Replacing uuid-ossp with uuid-freebsd