Příkaz UPDATE
mění hodnoty zadaných sloupců v jednom nebo více řádcích v tabulce nebo pohledu. Úplný popis UPDATE
příkazu SQL naleznete v příručce Oracle Database SQL Reference.
Syntaxe
prohlášení o aktualizaci :: =
Popis ilustrace update_statement.gif
Popis klíčových slov a parametrů
alias
Jiný (obvykle krátký) název odkazované tabulky nebo pohledu, obvykle používaný v klauzuli WHERE
.
název_sloupce
Sloupec (nebo jeden ze sloupců), který se má aktualizovat. Musí to být název sloupce v odkazované tabulce nebo zobrazení. Název sloupce nelze v seznamu column_name
opakovat. Názvy sloupců se nemusí v příkazu UPDATE
zobrazovat ve stejném pořadí, v jakém se zobrazují v tabulce nebo zobrazení.
returns_clause
Vrací hodnoty z aktualizovaných řádků, což eliminuje potřebu SELECT
řádků poté. Hodnoty sloupců můžete načíst do proměnných nebo hostitelských proměnných nebo do kolekcí nebo polí hostitele. Klauzuli RETURNING
nelze použít pro vzdálené nebo paralelní aktualizace. Pokud příkaz neovlivní žádné řádky, hodnoty proměnných uvedených v klauzuli RETURNING
nejsou definovány. Syntaxi returning_clause
naleznete v části „RETURNING INTO“.
SET column_name = sql_expression
V této klauzuli je přiřazena hodnota sql_expression
do sloupce označeného column_name
. Pokud sql_expression
obsahuje odkazy na sloupce v aktualizované tabulce, jsou odkazy vyřešeny v kontextu aktuálního řádku. Staré hodnoty sloupců se používají na pravé straně znaménka rovná se.
SET column_name = (subquery3)
Přiřadí hodnotu načtenou z databáze pomocí subquery3
do sloupce označeného column_name
. Poddotaz musí vrátit přesně jeden řádek a jeden sloupec.
SET (název_sloupce, název_sloupce, …) = (poddotaz4)
Přiřadí hodnoty načtené z databáze pomocí subquery4
do sloupců v seznamu column_name
. Poddotaz musí vrátit přesně jeden řádek, který obsahuje všechny uvedené sloupce. Hodnoty sloupců vrácené poddotazem jsou přiřazeny ke sloupcům v seznamu sloupců v pořadí. První hodnota je přiřazena k prvnímu sloupci v seznamu, druhá hodnota je přiřazena druhému sloupci v seznamu atd.
sql_expression
Libovolný platný výraz SQL. Další informace najdete v příručce Oracle Database SQL Reference.
poddotaz
Příkaz SELECT
, který poskytuje sadu řádků pro zpracování. Jeho syntax je podobná syntaxi select_into_statement
bez klauzule INTO
. Viz „Příkaz SELECT INTO“.
table_reference
Tabulka nebo zobrazení, které musí být přístupné při provádění příkazu UPDATE
a pro které musíte mít UPDATE
oprávnění. Syntaxe table_reference
najdete v části „Příkaz DELETE“.
TABLE (subquery2)
Operand TABLE
je SELECT
příkaz, který vrací hodnotu jednoho sloupce, kterou musí být vnořená tabulka nebo varray. Provozovatel TABLE
informuje společnost Oracle, že hodnota je kolekce, nikoli skalární hodnota.
KDE AKTUÁLNĚ cursor_name
Odkazuje na poslední řádek zpracováno příkazem FETCH
přidruženým k uvedenému kurzoru. Kurzor musí být FOR
UPDATE
a musí být otevřený a umístěný na řádku. Pokud kurzor není otevřený, klauzule CURRENT
OF
způsobí chybu. Pokud je kurzor otevřený, ale nebyly načteny žádné řádky nebo poslední načtení nevrátilo žádné řádky, PL / SQL vyvolá předdefinovanou výjimku NO_DATA_FOUND
.
WHERE search_condition
Vybírá, které řádky se mají aktualizovat v databázové tabulce. Aktualizovány jsou pouze řádky, které splňují podmínku hledání. Pokud tuto klauzuli vynecháte, aktualizují se všechny řádky v tabulce.
Poznámky k použití
Můžete použít UPDATE
WHERE
CURRENT
OF
prohlášení po načtení z otevřeného kurzoru (včetně načtení provedených kurzorem FOR
smyčka), za předpokladu, že přidružený dotaz je FOR
UPDATE
. Toto prohlášení aktualizuje právě načtený řádek.
Implicitní kurzor SQL
a atributy kurzoru %NOTFOUND
, %FOUND
, %ROWCOUNT
a %ISOPEN
vám umožní přístup k užitečným informacím o provedení UPDATE
prohlášení.
Příklady
Příklad 13-7 vytvoří tabulku se správnými ID zaměstnanců, ale zkreslenými jmény. Potom spustí příkaz UPDATE
s korelovaným dotazem, aby načetl správná jména z EMPLOYEES
tabulky a opravil názvy v nové tabulce .
Příklady najdete v následujících odstavcích:
Příklad 1-12, „Vytvoření uloženého podprogramu“
Příklad 4-1, „Použití jednoduchého příkazu IF-THEN“
Příklad 5-51, „Aktualizace řádku pomocí záznamu“
Příklad 5-52, „Použití klauzule RETURNING se záznamem“
Příklad 6-1, „Manipulace s daty pomocí PL / SQL“
Příklad 6-5, „Použití CURRVAL a NEXTVAL“
Příklad 6-6, „Použití ROWNUM“
Příklad 6-38, „Použití SAVEPOINT s ROLLBACK“
Příklad 6-41, „Použití CURRENT OF aktualizovat nejnovější řádek načtený z kurzoru „
Příklad 7-1,“ Příklady dynamického SQL „
Příklad 7-5,“ Dynamický SQL s RETURNING BULK COLLECT INTO „“ Příklad 7-6 „Dynamický příkaz SQL Inside FORALL“
Příklad 11-6, „Použití vrácení zpět s FORALL“
Příklad 11-9, „Hromadná operace, která pokračuje i přes výjimky“
Související témata
„Manipulace s daty“
„Příkaz DELETE“
„Příkaz FETCH“
„Příkaz INSERT“