Die Anweisung UPDATE
ändert die Werte der angegebenen Spalten in einer oder mehreren Zeilen in einer Tabelle oder Ansicht. Eine vollständige Beschreibung der SQL-Anweisung UPDATE
finden Sie in der Oracle Database SQL-Referenz.
Syntax
update-Anweisung :: =
Beschreibung der Abbildung update_statement.gif
Schlüsselwort- und Parameterbeschreibung
Alias
Ein anderer (normalerweise kurzer) Name für die referenzierte Tabelle oder Ansicht, der normalerweise in der WHERE
-Klausel verwendet wird.
Spaltenname
Die zu aktualisierende Spalte (oder eine der Spalten). Es muss der Name einer Spalte in der referenzierten Tabelle oder Ansicht sein. Ein Spaltenname kann in der Liste column_name
nicht wiederholt werden. Spaltennamen müssen in der Anweisung UPDATE
nicht in derselben Reihenfolge angezeigt werden, in der sie in der Tabelle oder Ansicht angezeigt werden.
Rückgabeklausel
Gibt Werte zurück aus aktualisierten Zeilen, sodass die Zeilen danach nicht mehr SELECT
sein müssen. Sie können die Spaltenwerte in Variablen oder Hostvariablen oder in Sammlungen oder Hostarrays abrufen. Sie können die Klausel RETURNING
nicht für Remote- oder parallele Updates verwenden. Wenn die Anweisung keine Zeilen beeinflusst, sind die Werte der in der RETURNING
-Klausel angegebenen Variablen undefiniert. Die Syntax von returning_clause
finden Sie unter „RETURNING INTO-Klausel“.
SET column_name = sql_expression
Diese Klausel weist den Wert von sql_expression
zu der durch column_name
gekennzeichneten Spalte. Wenn sql_expression
Verweise auf Spalten in der zu aktualisierenden Tabelle enthält, werden die Verweise im Kontext der aktuellen Zeile aufgelöst. Die alten Spaltenwerte werden auf der rechten Seite des Gleichheitszeichens verwendet.
SET column_name = (Unterabfrage3)
Weist den von zu der durch column_name
gekennzeichneten Spalte. Die Unterabfrage muss genau eine Zeile und eine Spalte zurückgeben.
SET (Spaltenname, Spaltenname, …) = (Unterabfrage4)
Weist die von subquery4
zu den Spalten in der Liste column_name
. Die Unterabfrage muss genau eine Zeile zurückgeben, die alle aufgelisteten Spalten enthält. Die von der Unterabfrage zurückgegebenen Spaltenwerte werden den Spalten in der Spaltenliste der Reihe nach zugewiesen. Der erste Wert wird der ersten Spalte in der Liste zugewiesen, der zweite Wert wird der zweiten Spalte in der Liste zugewiesen usw.
sql_expression
Jeder gültige SQL-Ausdruck. Weitere Informationen finden Sie in der Oracle Database SQL-Referenz.
Unterabfrage
Eine SELECT
-Anweisung, die eine Reihe von Zeilen für die Verarbeitung bereitstellt. Die Syntax entspricht der von select_into_statement
ohne die Klausel INTO
. Siehe „SELECT INTO-Anweisung“.
Tabellenreferenz
Eine Tabelle oder Ansicht, auf die zugegriffen werden muss, wenn Sie die Anweisung UPDATE
ausführen, und für Sie müssen über die Berechtigungen UPDATE
verfügen. Die Syntax von table_reference
finden Sie unter „DELETE-Anweisung“.
TABLE (Unterabfrage2)
Der Operand von TABLE
ist eine SELECT
-Anweisung, die einen einzelnen Spaltenwert zurückgibt, der eine verschachtelte Tabelle oder ein Varray sein muss. Der Operator TABLE
informiert Oracle, dass der Wert eine Auflistung und kein skalarer Wert ist.
WHERE CURRENT OF cursor_name
Bezieht sich auf die letzte Zeile wird von der Anweisung FETCH
verarbeitet, die dem angegebenen Cursor zugeordnet ist. Der Cursor muss FOR
UPDATE
sein und muss offen und in einer Zeile positioniert sein. Wenn der Cursor nicht geöffnet ist, verursacht die Klausel CURRENT
OF
einen Fehler. Wenn der Cursor geöffnet ist, aber keine Zeilen abgerufen wurden oder der letzte Abruf keine Zeilen zurückgegeben hat, löst PL / SQL die vordefinierte Ausnahme NO_DATA_FOUND
aus.
WHERE search_condition
Wählt aus, welche Zeilen in der Datenbanktabelle aktualisiert werden sollen. Es werden nur Zeilen aktualisiert, die die Suchbedingung erfüllen. Wenn Sie diese Klausel weglassen, werden alle Zeilen in der Tabelle aktualisiert.
Verwendungshinweise
Sie können die UPDATE
WHERE
CURRENT
OF
Anweisung nach einem Abruf von einem geöffneten Cursor (einschließlich Abrufen durch einen Cursor FOR
-Schleife), vorausgesetzt, die zugehörige Abfrage lautet FOR
UPDATE
. Diese Anweisung aktualisiert die gerade abgerufene Zeile.
Der implizite Cursor SQL
und die Cursorattribute %NOTFOUND
, %FOUND
, %ROWCOUNT
und %ISOPEN
können Sie auf nützliche Informationen zur Ausführung eines UPDATE
zugreifen Anweisung.
Beispiele
Beispiel 13-7 erstellt eine Tabelle mit korrekten Mitarbeiter-IDs, aber verstümmelten Namen. Anschließend wird eine UPDATE
-Anweisung mit einer korrelierten Abfrage ausgeführt, um die korrekten Namen aus der Tabelle EMPLOYEES
abzurufen und die Namen in der neuen Tabelle zu korrigieren
Beispiele finden Sie im Folgenden:
Beispiel 1-12, „Erstellen eines gespeicherten Unterprogramms“
Beispiel 4-1, „Verwenden einer einfachen IF-THEN-Anweisung“
Beispiel 5-51, „Aktualisieren einer Zeile mithilfe eines Datensatzes“
Beispiel 5-52, „Verwenden der RETURNING-Klausel mit einem Datensatz“
Beispiel 6-1, „Datenmanipulation mit PL / SQL“
Beispiel 6-5, „Verwenden von CURRVAL und NEXTVAL“
Beispiel 6-6, „Verwenden von ROWNUM“
Beispiel 6-38, „Verwenden von SAVEPOINT mit ROLLBACK“
Beispiel 6-41, „Verwenden von CURRENT“ OF, um die letzte von einem Cursor abgerufene Zeile zu aktualisieren „
Beispiel 7-1,“ Beispiele für dynamisches SQL „
Beispiel 7-5,“ Dynamisches SQL mit RETURNING BULK COLLECT INTO-Klausel „
Beispiel 7-6 , „Dynamic SQL Inside FORALL-Anweisung“
Beispiel 11-6, „Verwenden von Rollbacks mit FORALL“
Beispiel 11-9, „Massenoperation, die trotz Ausnahmen fortgesetzt wird“
Verwandte Themen
„Datenmanipulation“
„DELETE-Anweisung“
„FETCH-Anweisung“
„INSERT-Anweisung“