Oracle CURSOR FOR UPDATE (Čeština)

Shrnutí: v tomto výukovém programu se naučíte, jak používat aktualizovatelný kurzor Oracle k aktualizaci dat v tabulce.

Úvod do aplikace Oracle Cursor PRO AKTUALIZACI

Někdy chcete sadu řádků uzamknout, než je budete moci aktualizovat ve svém programu. Oracle poskytuje klauzuli FOR UPDATE příkazu SELECT v aktualizovatelném kurzoru, aby provedl tento druh uzamykacího mechanismu.

Zde je syntaxe pro deklaraci aktualizovatelného kurzoru:

Nová syntaxe je zde FOR UPDATE klíčová slova.

Jakmile otevřete kurzor, Oracle uzamkne všechny řádky vybrané příkazem SELECT ... FOR UPDATE v tabulkách uvedených v FROM klauzule. A tyto řádky zůstanou uzamčené, dokud se kurzor nezavře nebo dokud nebude transakce dokončena pomocí COMMIT nebo ROLLBACK.

Všimněte si, že Oracle uzamkne všechny řádky vrácené SELECT ... FOR UPDATE během aktualizace, proto byste měli mít klauzuli WHERE, abyste vybrali pouze nezbytné řádky být uzamčen.

Pokud máte konkrétní sloupec, který chcete aktualizovat, můžete jej uvést v klauzuli FOR UPDATE takto:

V tomto případě Oracle uzamkne pouze řádky tabulky, jejichž název sloupce je uveden v klauzuli FOR UPDATE OF.

Upozorňujeme, že pokud použijete pouze klauzuli FOR UPDATE a po klíčovém slově OF nezadáte jeden nebo více sloupců, Oracle poté uzamknout všechny vybrané řádky ve všech tabulkách uvedených v klauzuli FROM.

Příklad Oracle Cursor FOR UPDATE

Zvažte následující příklad.

Jak to funguje.

  • Nejprve deklarujte aktualizovatelný kurzor, který aktualizuje kredity zákazníků, jejichž kredity jsou větší než nula.
  • Další , smyčka přes řádky v kurzorech.
  • Poté získejte počet objednávek pro každého zákazníka.
  • Poté přiřaďte přírůstek kreditu na základě počtu objednávek.
  • Nakonec aktualizujte kredit zákazníka.

V tomto výukovém programu jste se naučili používat aktualizovatelný kurzor Oracle k aktualizaci dat v tabulce.

  • Byl tento výukový program užitečný?
  • Ano Ne

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *