Re: Reg: BULK COLLECT
| От | Andy Colson |
|---|---|
| Тема | Re: Reg: BULK COLLECT |
| Дата | |
| Msg-id | 5563193E.5020406@squeakycode.net обсуждение исходный текст |
| Ответ на | Reg: BULK COLLECT (Medhavi Mahansaria <medhavi.mahansaria@tcs.com>) |
| Ответы |
Re: Reg: BULK COLLECT
|
| Список | pgsql-general |
On 05/25/2015 07: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? > > 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 > That seems pretty over complicated version of: insert into b select * from a; Which is all you'll need in PG. It it does something else, then I failed to understand the stored proc. -Andy
В списке pgsql-general по дате отправления: