Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle SQL:come leggere e incrementare un campo

In questo caso particolare, una sequenza è la soluzione giusta come accennato. Ma se in qualche situazione futura hai bisogno sia di aggiornare qualcosa che di restituire un valore nella stessa istruzione, puoi usare il RETURNING clausola:

UPDATE atable SET foo = do_something_with(foo) RETURNING foo INTO ?

Se il codice chiamante è PL/SQL, sostituire ? con una variabile PL/SQL locale; altrimenti puoi associarlo come parametro di output nel tuo programma.

Modifica:dal momento che hai menzionato Perl, qualcosa del genere dovrebbe funzionare (non testato):

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

Vedi DBI .