sql >> Base de Datos >  >> RDS >> Oracle

Oracle SQL:cómo leer e incrementar un campo

En este caso particular, una secuencia es la solución correcta como se mencionó. Pero si en alguna situación futura necesita actualizar algo y devolver un valor en la misma declaración, puede usar RETURNING cláusula:

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

Si el código de llamada es PL/SQL, reemplace el ? con una variable PL/SQL local; de lo contrario, puede enlazarlo como un parámetro de salida en su programa.

Editar:como mencionaste Perl, algo como esto debería funcionar (no probado):

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

Consulte DBI .