Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle SQL:Como ler e incrementar um campo


Neste caso em particular, uma sequência é a solução correta, conforme mencionado. Mas se em alguma situação futura você precisar atualizar algo e retornar um valor na mesma declaração, você pode usar o RETURNING cláusula:
UPDATE atable SET foo = do_something_with(foo) RETURNING foo INTO ?

Se o código de chamada for PL/SQL, substitua o ? com uma variável PL/SQL local; caso contrário, você pode vinculá-lo como um parâmetro de saída em seu programa.

Edit:Desde que você mencionou Perl, algo assim deve funcionar (não testado):
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 .