See the postgresql documentation at:
http://www.postgresql.org/docs/8.2/interactive/plpgsql-cursors.html 

>-----Original Message-----
>From: [EMAIL PROTECTED] 
>[mailto:[EMAIL PROTECTED] On Behalf Of 
>Anton Andreev
>Sent: dinsdag 24 april 2007 13:45
>To: pgadmin-support@postgresql.org
>Subject: [pgadmin-support] questions about cursors
>
>Hi,
>
>I am trying to use cursors and I am really frustrated already. 
>Do  I need to install an extension?
>
>1. Problem number one is that what ever I use in front of the 
>fetch command it is not being accepted, it gives a syntax 
>error. If I use a number ,"all" or "forward" it gives an error 
>again?????????? I want to do something like the code below:
>
>CREATE OR REPLACE FUNCTION database_correction()
>  RETURNS double precision AS
>$BODY$
>DECLARE
>    mycursor CURSOR FOR select distinct(fund_id) from 
>"NAV_values_bfb_history";
>    iterator integer;
>
>BEGIN
>open mycursor;

Please see chapter 37.8.3.1 "FETCH" (in the 8.2 documentation).
Important for you is: "As with SELECT INTO, the special variable FOUND
may be checked to see whether a row was obtained or not."


>FETCH mycursor INTO iterator;
>
>--fetch next  from  mycursor  --gives  an error
>

WHILE (FOUND) LOOP
        -- compute
        FETCH mycursor INTO interator;
END LOOP;

-- instead of
>WHILE (FETCH next from mycursor) LOOP
>    -- some computations here
>END LOOP;

I believe this should work. I've never really used cursors before, as I
can usually do it with regular SQL statements (which are usually
faster).
I should also advise that you can create your own aggregate (see CREATE
AGGREGATE in the documentation), which might, or might not, be easier
for your purposes.

>CLOSE mycursor;
>END;
>
>2. What is the right way to check that the cursor has ended. 
>In sqlserver there is a variable "@@fetch_status". I have to 
>make here some comparison in the while clause, but I am not 
>sure what it should be. I could not find a single example for 
>cursor in a loop.

When FOUND evaluates to false, you should have completed. (In case of
errors, you will probably have an exception being thrown).

>I will greatly appreciate any help, pgsql is my database of choice.

Hope this helps...

- Joris


---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
       subscribe-nomail command to [EMAIL PROTECTED] so that your
       message can get through to the mailing list cleanly

Reply via email to