From: | Ian Lance Taylor <ian(at)airs(dot)com> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | CURRENT OF cursor without OIDs |
Date: | 2001-08-07 15:59:13 |
Message-ID: | siae1bkgj2.fsf@daffy.airs.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Oracle PL/SQL supports a very convenient feature in which you can say
something like
DECLARE
CURSUR cur IS SELECT * FROM RECORD;
BEGIN
OPEN cur;
UPDATE record SET field = value WHERE CURRENT OF cur;
CLOSE cur;
END
We have cursors in the development version of PL/pgSQL, but they don't
support CURRENT OF. In the patch I wrote a few months back to add
cursor support to PL/pgSQL, which was not adopted, I included support
for CURRENT OF. I did it by using OIDs. Within PL/pgSQL, I modified
the cursor select statement to also select the OID. Then I change
WHERE CURRENT OF cur to oid = oidvalue. Of course this only works in
limited situations, and in particular doesn't work after OID
wraparound.
Anyhow, I see that there is a move afoot to eliminate mandatory OIDs.
My question now is: if there is no OID, is there any comparable way to
implement CURRENT OF cursor? Basically what is needed is some way to
identify a particular row between a SELECT and an UPDATE.
Ian
From | Date | Subject | |
---|---|---|---|
Next Message | Hannu Krosing | 2001-08-07 16:10:06 | Re: OID wraparound: summary and proposal |
Previous Message | Tom Lane | 2001-08-07 15:36:41 | Re: OID wraparound: summary and proposal |