I dette særlige tilfælde er en sekvens som nævnt den rigtige løsning. Men hvis du i en fremtidig situation både skal opdatere noget og returnere en værdi i samme sætning, kan du bruge RETURNING
klausul:
UPDATE atable SET foo = do_something_with(foo) RETURNING foo INTO ?
Hvis opkaldskoden er PL/SQL, skal du udskifte ? med en lokal PL/SQL-variabel; ellers kan du binde det som en outputparameter i dit program.
Edit:Siden du nævnte Perl, burde noget som dette virke (utestet):
my $sth = $dbh->prepare('UPDATE mytable SET idnext = idnext + 1 returning idnext into ?');
my $idnext;
$sth->bind_param_inout(1, \$idnext, 8);
$sth->execute; # now $idnext should contain the value
Se DBI .