order by in for loop in plpgsql does not work - Mailing list pgsql-general

From Jean-Luc Lachance
Subject order by in for loop in plpgsql does not work
Date
Msg-id 3DE3DB32.8138C2C8@nsd.ca
Whole thread Raw
In response to Re: Compatibility of future releases  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-general
Any idea why when I call this function the record are not processed in
the order requested?

JLL

P.S.

It would be nice if the syntax would allow me to write something like >>
cur.seqno = seq
and have the underlying record updated.



declare

cur record;
seq int;
exchangeno text;
routeno text;

begin

exchangeno := '';
routeno := '';

for cur in
    select oid, * from r order by exchangeno, routeno, street,
municipality, parity desc, fromno for update
loop
    if cur.exchangeno != exchangeno or cur.routeno != routeno
    then
        seq := 1;
        exchangeno := cur.exchangeno;
        routeno := cur.routeno;
    end if;
    update r set seqno = seq, route = routeno || trim( lpad( seq, 4, '0'))
where oid = cur.oid;
    seq := seq + 1;
end loop;

return 0;
end;

pgsql-general by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Compatibility of future releases
Next
From: Jean-Luc Lachance
Date:
Subject: Re: order by in for loop in plpgsql does not work