Hi, I feel a little stupid - I suddenly remembered that I had asked about this before and got a perfectly good answer: Use ROWID instead of a cursor. SELECT field, ROWID FROM table FOR UPDATE; loop: UPDATE table SET field=? WHERE ROWID=?;
That turned out to be the simplest solution for me, so I did that. Because... Michael A Chase writes: > You have to get the cursor name using the CursorName statement handle > attribute ($csr->{CursorName}). The DBI statement handle is not the > statement name. You will have to test to see if DBD::Oracle supports that > attribute, I don't think it does yet. Right. > You might be able to get the cursor > name using Oracle::OCI, but I have not used it so I don't know how. I'd have to reinstall Oracle first. Since Oracle is so bloated, we only keep around a minimal installation, without e.g. Pro*C. > You might also be able to force the name of the cursor using the alternate > syntax mentioned in the fine manual (perldoc DBD::Oracle): > > $sth1 = $dbh->prepare(q{ > CREATE OR REPLACE FUNCTION sp_ListEmp RETURN types.cursorType Good idea, but I don't have privileges to create functions:-( I suppose I could get them, but it was simpler to just use ROWID. Thanks anyway. -- Hallvard