De UPDATE
-instructie verandert de waarden van gespecificeerde kolommen in een of meer rijen in een tabel of weergave. Zie Oracle Database SQL Reference voor een volledige beschrijving van de UPDATE
SQL-instructie.
Syntaxis
update-instructie :: =
Beschrijving van de illustratie update_statement.gif
Trefwoord en parameterbeschrijving
alias
Een andere (meestal korte) naam voor de tabel of view waarnaar wordt verwezen, meestal gebruikt in de WHERE
-clausule.
kolomnaam
De kolom (of een van de kolommen) die moet worden bijgewerkt. Het moet de naam zijn van een kolom in de tabel of weergave waarnaar wordt verwezen. Een kolomnaam kan niet worden herhaald in de lijst column_name
. Kolomnamen hoeven niet in de instructie UPDATE
te verschijnen in dezelfde volgorde waarin ze in de tabel of weergave voorkomen.
return_clause
Geeft waarden terug uit bijgewerkte rijen, waardoor de noodzaak om SELECT
de rijen achteraf te verwijderen. U kunt de kolomwaarden ophalen in variabelen of hostvariabelen, of in verzamelingen of hostarrays. U kunt de clausule RETURNING
niet gebruiken voor externe of parallelle updates. Als de instructie geen enkele rij beïnvloedt, zijn de waarden van de variabelen gespecificeerd in de RETURNING
-clausule niet gedefinieerd. Zie “RETURNING INTO Clause” voor de syntaxis van returning_clause
.
SET column_name = sql_expression
Deze clausule wijst de waarde toe van sql_expression
naar de kolom aangeduid met column_name
. Als sql_expression
verwijzingen bevat naar kolommen in de tabel die wordt bijgewerkt, worden de verwijzingen omgezet in de context van de huidige rij. De oude kolomwaarden worden aan de rechterkant van het gelijkteken gebruikt.
SET column_name = (subquery3)
Wijst de waarde toe die uit de database is opgehaald door subquery3
naar de kolom aangeduid met column_name
. De subquery moet exact één rij en één kolom retourneren.
SET (kolomnaam, kolomnaam, …) = (subquery4)
Wijst de waarden toe die uit de database zijn opgehaald door subquery4
naar de kolommen in de column_name
lijst. De subquery moet exact één rij retourneren die alle vermelde kolommen bevat. De kolomwaarden die door de subquery worden geretourneerd, worden in volgorde toegewezen aan de kolommen in de kolomlijst. De eerste waarde wordt toegewezen aan de eerste kolom in de lijst, de tweede waarde wordt toegewezen aan de tweede kolom in de lijst, enzovoort.
sql_expression
Elke geldige SQL-expressie. Zie Oracle Database SQL Reference voor meer informatie.
subquery
Een SELECT
-instructie die een set rijen biedt voor verwerking. De syntaxis is vergelijkbaar met die van select_into_statement
zonder de INTO
-clausule. Zie “SELECTEER IN instructie”.
table_reference
Een tabel of weergave die toegankelijk moet zijn wanneer u de instructie UPDATE
uitvoert, en voor waarvoor u UPDATE
rechten moet hebben. Zie “DELETE-instructie” voor de syntaxis van table_reference
.
TABLE (subquery2)
De operand van TABLE
is een SELECT
-instructie die een enkele kolomwaarde retourneert, die een geneste tabel of een varray moet zijn. Operator TABLE
informeert Oracle dat de waarde een verzameling is, geen scalaire waarde.
WHERE CURRENT OF cursor_name
Verwijst naar de laatste rij verwerkt door de FETCH
-instructie die is gekoppeld aan de opgegeven cursor. De cursor moet FOR
UPDATE
zijn en moet open zijn en op een rij staan. Als de cursor niet open is, veroorzaakt de clausule CURRENT
OF
een fout. Als de cursor open is, maar er zijn geen rijen opgehaald of de laatste keer dat er geen rijen zijn opgehaald, genereert PL / SQL de vooraf gedefinieerde uitzondering NO_DATA_FOUND
.
WHERE search_condition
Kiest welke rijen moeten worden bijgewerkt in de databasetabel. Alleen rijen die aan de zoekvoorwaarde voldoen, worden bijgewerkt. Als u deze clausule weglaat, worden alle rijen in de tabel bijgewerkt.
Gebruiksnotities
U kunt de UPDATE
WHERE
CURRENT
OF
instructie na een ophaalactie vanaf een geopende cursor (inclusief ophaalacties gedaan door een cursor FOR
loop), op voorwaarde dat de bijbehorende zoekopdracht FOR
UPDATE
is. Deze instructie werkt de rij bij die zojuist is opgehaald.
De impliciete cursor SQL
en de cursorattributen %NOTFOUND
, %FOUND
, %ROWCOUNT
, en %ISOPEN
geven u toegang tot nuttige informatie over de uitvoering van een UPDATE
verklaring.
Voorbeelden
Voorbeeld 13-7 creëert een tabel met correcte werknemer-IDs maar verminkte namen. Vervolgens voert het een UPDATE
-instructie uit met een gecorreleerde query, om de juiste namen op te halen uit de EMPLOYEES
-tabel en de namen in de nieuwe tabel te corrigeren .
Zie voor voorbeelden het volgende:
Voorbeeld 1-12, “Een opgeslagen subprogramma maken”
Voorbeeld 4-1, “Een eenvoudige IF-THEN-instructie gebruiken”
Voorbeeld 5-51, “Een rij bijwerken met een record”
Voorbeeld 5-52, “De RETURNING-clausule gebruiken met een record”
Voorbeeld 6-1, “Gegevensmanipulatie met PL / SQL”
Voorbeeld 6-5, “CURRVAL en NEXTVAL gebruiken”
Voorbeeld 6-6, “ROWNUM gebruiken”
Voorbeeld 6-38, “SAVEPOINT gebruiken met ROLLBACK”
Voorbeeld 6-41, “CURRENT gebruiken OF om de laatste rij bij te werken die is opgehaald met een cursor “
Voorbeeld 7-1,” Voorbeelden van dynamische SQL “
Voorbeeld 7-5,” Dynamische SQL met RETURNING BULK COLLECT IN clausule “
Voorbeeld 7-6 , “Dynamic SQL Inside FORALL-instructie”
Voorbeeld 11-6, “Rollbacks gebruiken met FORALL”
Voorbeeld 11-9, “Bulkoperatie die ondanks uitzonderingen doorgaat”
Verwante onderwerpen
“Gegevensmanipulatie”
“DELETE-instructie”
“FETCH-instructie”
“INSERT-instructie”