sql >> Databáze >  >> RDS >> Oracle

Oracle SQL:Jak číst a zvětšovat pole

V tomto konkrétním případě je sekvence správným řešením, jak bylo zmíněno. Ale pokud v nějaké budoucí situaci potřebujete něco aktualizovat a vrátit hodnotu ve stejném příkazu, můžete použít RETURNING klauzule:

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

Pokud je volající kód PL/SQL, nahraďte ? s lokální proměnnou PL/SQL; jinak jej můžete svázat jako výstupní parametr ve vašem programu.

Edit:Protože jsi zmínil Perl, něco takového by mělo fungovat (netestováno):

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

Viz DBI .



  1. PHP/MySQL:Načítání záznamů posledních *celých* týdnů

  2. Jak přirozeně spojit dva dotazy s klauzulí?

  3. Aktualizujte konkrétní řádek v tabulce pomocí tlačítka

  4. Jak optimalizovat dotaz Oracle, který má v klauzuli where pro datum to_char