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

Oracle SQL:Sådan læser og øger du et felt

I dette særlige tilfælde er en sekvens som nævnt den rigtige løsning. Men hvis du i en fremtidig situation både skal opdatere noget og returnere en værdi i samme sætning, kan du bruge RETURNING klausul:

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

Hvis opkaldskoden er PL/SQL, skal du udskifte ? med en lokal PL/SQL-variabel; ellers kan du binde det som en outputparameter i dit program.

Edit:Siden du nævnte Perl, burde noget som dette virke (utestet):

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

Se DBI .



  1. Hvorfor kaster SQL-serveren denne fejl:Kan ikke indsætte værdien NULL i kolonnen 'id'?

  2. Oracle 10g:estimering af MIN/MAX kolonneværdi

  3. TYPO3:Kan jeg trække fra en anden database på den samme server?

  4. Tilmeld dig Q&A Forum for udviklere