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