In dit specifieke geval is een sequentie de juiste oplossing zoals vermeld. Maar als u in een toekomstige situatie zowel iets moet bijwerken als een waarde in dezelfde instructie moet retourneren, kunt u de RETURNING
gebruiken clausule:
UPDATE atable SET foo = do_something_with(foo) RETURNING foo INTO ?
Als de landcode PL/SQL is, vervangt u de ? met een lokale PL/SQL-variabele; anders kun je het binden als een uitvoerparameter in je programma.
Bewerken:aangezien je Perl noemde, zou zoiets moeten werken (niet getest):
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
Zie DBI .