V tomto konkrétním případě je sekvence správným řešením, jak bylo zmíněno. Ale pokud v nějaké budoucí situaci potřebujete něco aktualizovat a vrátit hodnotu ve stejném příkazu, můžete použít RETURNING
klauzule:
UPDATE atable SET foo = do_something_with(foo) RETURNING foo INTO ?
Pokud je volající kód PL/SQL, nahraďte ? s lokální proměnnou PL/SQL; jinak jej můžete svázat jako výstupní parametr ve vašem programu.
Edit:Protože jsi zmínil Perl, něco takového by mělo fungovat (netestováno):
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
Viz DBI .