Re: Cursors
От | Stephan Szabo |
---|---|
Тема | Re: Cursors |
Дата | |
Msg-id | 20030824094243.R58583-100000@megazone.bigpanda.com обсуждение исходный текст |
Ответ на | Cursors (Michael Guerin <guerin@rentec.com>) |
Список | pgsql-novice |
On Sun, 24 Aug 2003, Michael Guerin wrote: > I'm trying to convert a sql server stored procedure into a postgresql > function and I seem to get stuck on converting the cursor. > > sql server snipet > DECLARE @x int, @y int > DECLARE rs CURSOR FOR > SELECT x,y from foo; > OPEN rs > FETECH NEXT FROM rs into @x, @y > WHILE (@@FETCH_STATUS =0) > BEGIN > --do something > FETECH NEXT FROM rs into @x, @y > END > CLOSE rs > DEALLOCATE rs > ... > > -------------------------- > PostgreSQL ??? > x int; > y int; > DECLARE rs CURSOR FOR > SELECT x,y from foo; > OPEN rs > FETCH NEXT FROM rs into :x, :y; > While (FOUND) loop > --do something > FETCH NEXT FROM rs into :x, :y; > END LOOP > CLOSE rs; > > > It complains about an error near FETCH? I get an error at or around "x" so I assume this isn't the function body you're actually trying. I'd probably say something like: CREATE OR REPLACE FUNCTION f2() returns void as' DECLARE r record; rs CURSOR FOR SELECT x,y from foo; BEGIN OPEN rs; FETCH rs into r; While (FOUND) loop --do something (using r.x and r.y) RAISE NOTICE ''% %'', r.x, r.y; -- FETCH rs into r; END LOOP; CLOSE rs; RETURN; END;' language 'plpgsql';
В списке pgsql-novice по дате отправления: