UPDATE
-sætningen ændrer værdierne for de angivne kolonner i en eller flere rækker i en tabel eller en oversigt. For en fuld beskrivelse af UPDATE
SQL-sætning, se Oracle Database SQL Reference.
Syntaks
opdateringserklæring :: =
Beskrivelse af illustrationen update_statement.gif
Nøgleord og parameterbeskrivelse
alias
Et andet (normalt kort) navn til den refererede tabel eller visning, der typisk bruges i WHERE
-klausulen.
kolonnenavn
Kolonnen (eller en af kolonnerne), der skal opdateres. Det skal være navnet på en kolonne i den refererede tabel eller visning. Et kolonnenavn kan ikke gentages på column_name
-listen. Kolonnenavne behøver ikke at blive vist i UPDATE
udsagnet i samme rækkefølge som de vises i tabellen eller visningen.
return_clause
Returnerer værdier fra opdaterede rækker, hvilket eliminerer behovet for SELECT
rækkerne bagefter. Du kan hente kolonneværdierne i variabler eller værtsvariabler eller i samlinger eller værtsarrays. Du kan ikke bruge klausulen RETURNING
til fjernopdateringer eller parallelle opdateringer. Hvis udsagnet ikke påvirker nogen rækker, er værdierne for de variabler, der er angivet i RETURNING
-klausulen, udefineret. For syntaksen for returning_clause
, se “TILBAGE TIL Klausul”.
SET column_name = sql_expression
Denne klausul tildeler værdien af sql_expression
til kolonnen identificeret af column_name
. Hvis sql_expression
indeholder referencer til kolonner i den tabel, der opdateres, løses referencerne i sammenhæng med den aktuelle række. De gamle kolonneværdier bruges på højre side af ligestegnet.
SET column_name = (subquery3)
Tildel den værdi, der er hentet fra databasen med subquery3
til kolonnen identificeret af column_name
. Underforespørgslen skal returnere nøjagtigt en række og en kolonne.
SET (kolonnenavn, kolonnenavn, …) = (underforespørgsel4)
Tildeler de værdier, der er hentet fra databasen med subquery4
til kolonnerne i column_name
-listen. Underforespørgslen skal returnere nøjagtigt en række, der indeholder alle de anførte kolonner. Kolonneværdierne, der returneres af underforespørgslen, tildeles kolonnerne i kolonnelisten i rækkefølge. Den første værdi tildeles den første kolonne på listen, den anden værdi tildeles den anden kolonne på listen osv.
sql_expression
Ethvert gyldigt SQL-udtryk. For mere information, se Oracle Database SQL Reference.
underforespørgsel
En SELECT
-erklæring, der indeholder et sæt rækker til behandling. Dens syntaks er som for select_into_statement
uden INTO
-sætningen. Se “SELECT INTO Statement”.
table_reference
En tabel eller visning, der skal være tilgængelig, når du udfører UPDATE
-erklæringen, og for som du skal have UPDATE
privilegier. For syntaksen for table_reference
, se “SLET erklæring”.
TABEL (underforespørgsel2)
Operand af TABLE
er en SELECT
-erklæring, der returnerer en enkelt kolonneværdi, som skal være en indlejret tabel eller en varray. Operatør TABLE
informerer Oracle om, at værdien er en samling, ikke en skalarværdi.
WHERE CURRENT OF cursor_name
Henviser til den sidste række behandlet af FETCH
udsagn tilknyttet den angivne markør. Markøren skal være FOR
UPDATE
og skal være åben og placeres på en række. Hvis markøren ikke er åben, forårsager CURRENT
OF
-klausulen en fejl. Hvis markøren er åben, men ingen rækker er hentet, eller den sidste hentning returnerer ingen rækker, hæver PL / SQL den foruddefinerede undtagelse NO_DATA_FOUND
.
WHERE search_condition
Vælger hvilke rækker der skal opdateres i databasetabellen. Kun rækker, der opfylder søgebetingelsen, opdateres. Hvis du udelader denne klausul, opdateres alle rækker i tabellen.
Noter om brug
Du kan bruge UPDATE
WHERE
CURRENT
OF
udsagn efter en hentning fra en åben markør (inklusive hentninger udført af en markør FOR
loop), forudsat at den tilknyttede forespørgsel er FOR
UPDATE
. Denne erklæring opdaterer den række, der lige blev hentet.
Den implicitte markør SQL
og markørattributter %NOTFOUND
, %FOUND
, %ROWCOUNT
og %ISOPEN
giver dig adgang til nyttige oplysninger om udførelsen af en UPDATE
erklæring.
Eksempler
Eksempel 13-7 opretter en tabel med korrekte medarbejder-ider men forvrængede navne. Derefter kører den en UPDATE
sætning med en korreleret forespørgsel for at hente de korrekte navne fra EMPLOYEES
-tabellen og rette navnene i den nye tabel .
Se følgende for eksempler:
Eksempel 1-12, “Oprettelse af et lagret underprogram”
Eksempel 4-1, “Brug af en simpel IF-THEN-sætning”
Eksempel 5-51, “Opdatering af en række ved hjælp af en post”
Eksempel 5-52, “Brug af RETURNING-klausulen med en post”
Eksempel 6-1, “Datemanipulation med PL / SQL”
Eksempel 6-5, “Brug af CURRVAL og NEXTVAL”
Eksempel 6-6, “Brug af ROWNUM”
Eksempel 6-38, “Brug af SAVEPOINT med ROLLBACK”
Eksempel 6-41, “Brug af CURRENT OF for at opdatere den seneste række hentet fra en markør “
Eksempel 7-1,” Eksempler på dynamisk SQL “
Eksempel 7-5,” Dynamisk SQL med RETURNING BULK COLLECT INTO Clause “
Eksempel 7-6 , “Dynamic SQL Inside FORALL Statement”
Eksempel 11-6, “Brug af tilbageførsler med FORALL”
Eksempel 11-9, “Bulk operation, der fortsætter på trods af undtagelser”
Relaterede emner
“Datamanipulation”
“SLET erklæring”
“FETCH-erklæring”
“INDSÆT erklæring”