Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle SQL :comment lire et incrémenter un champ

Dans ce cas particulier, une séquence est la bonne solution comme mentionné. Mais si, dans une situation future, vous devez à la fois mettre à jour quelque chose et renvoyer une valeur dans la même instruction, vous pouvez utiliser le RETURNING clause :

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

Si le code appelant est PL/SQL, remplacez le ? avec une variable PL/SQL locale ; sinon, vous pouvez le lier en tant que paramètre de sortie dans votre programme.

Edit :puisque vous avez mentionné Perl, quelque chose comme ça devrait fonctionner (non testé) :

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

Voir DBI .