Instrucțiunea UPDATE
modifică valorile coloanelor specificate într-unul sau mai multe rânduri dintr-un tabel sau vizualizare. Pentru o descriere completă a instrucțiunii SQL UPDATE
, consultați Oracle Database SQL Reference.
Sintaxă
declarație de actualizare :: =
Descrierea ilustrației update_statement.gif
Cuvânt cheie și descrierea parametrilor
alias
Un alt nume (de obicei scurt) pentru tabelul sau vizualizarea de referință, utilizat de obicei în clauza WHERE
.
column_name
Coloana (sau una dintre coloane) de actualizat. Trebuie să fie numele unei coloane din tabelul sau vizualizarea de referință. Un nume de coloană nu poate fi repetat în lista column_name
. Numele coloanelor nu trebuie să apară în instrucțiunea UPDATE
în aceeași ordine în care apar în tabel sau vizualizare.
return_clause
Returnează valori din rândurile actualizate, eliminând necesitatea SELECT
rândurilor după aceea. Puteți prelua valorile coloanei în variabile sau variabile gazdă, sau în colecții sau tablouri gazdă. Nu puteți utiliza clauza RETURNING
pentru actualizări de la distanță sau paralele. Dacă instrucțiunea nu afectează niciun rând, valorile variabilelor specificate în clauza RETURNING
sunt nedefinite. Pentru sintaxa returning_clause
, consultați „RETURNING INTO Clause”.
SET column_name = sql_expression
Această clauză atribuie valoarea sql_expression
la coloana identificată de column_name
. Dacă sql_expression
conține referințe la coloane din tabelul actualizat, referințele sunt rezolvate în contextul rândului curent. Vechile valori ale coloanei sunt folosite în partea dreaptă a semnului egal.
SET nume_coloană = (subinterogare3)
Atribuie valoarea recuperată din baza de date de subquery3
la coloana identificată de column_name
. Subinterogarea trebuie să returneze exact un rând și o coloană.
SET (column_name, column_name, …) = (subquery4)
Atribuie valorile recuperate din baza de date de subquery4
la coloanele din lista column_name
. Subinterogarea trebuie să returneze exact un rând care include toate coloanele listate. Valorile coloanelor returnate de subinterogare sunt atribuite coloanelor din lista de coloane în ordine. Prima valoare este atribuită primei coloane din listă, a doua valoare este alocată celei de-a doua coloane din listă și așa mai departe.
sql_expression
Orice expresie SQL validă. Pentru mai multe informații, consultați Oracle Database SQL Reference.
subinterogare
O instrucțiune SELECT
care oferă un set de rânduri pentru procesare. Sintaxa sa este ca cea a select_into_statement
fără clauza INTO
. Consultați „Instrucțiunea SELECT INTO”.
table_reference
O tabelă sau o vizualizare care trebuie să fie accesibilă atunci când executați instrucțiunea UPDATE
și pentru pe care trebuie să aveți UPDATE
privilegii. Pentru sintaxa table_reference
, consultați „DELETE statement”.
TABLE (subquery2)
Operandul TABLE
este o instrucțiune SELECT
care returnează o valoare a unei singure coloane, care trebuie să fie un tabel imbricat sau un varray. Operatorul TABLE
informează Oracle că valoarea este o colecție, nu o valoare scalară.
WHERE CURRENT OF cursor_name
Se referă la ultimul rând procesată de instrucțiunea FETCH
asociată cu cursorul specificat. Cursorul trebuie să fie FOR
UPDATE
și trebuie să fie deschis și poziționat pe un rând. Dacă cursorul nu este deschis, clauza CURRENT
OF
provoacă o eroare. Dacă cursorul este deschis, dar nu au fost preluate rânduri sau ultima preluare nu a returnat niciun rând, PL / SQL ridică excepția predefinită NO_DATA_FOUND
.
WHERE search_condition
Alege rândurile de actualizat în tabelul bazei de date. Doar rândurile care îndeplinesc condiția de căutare sunt actualizate. Dacă omiteți această clauză, toate rândurile din tabel sunt actualizate.
Note de utilizare
Puteți utiliza UPDATE
WHERE
CURRENT
OF
instrucțiune după o preluare dintr-un cursor deschis (inclusiv preluări efectuate de un cursor FOR
buclă), cu condiția ca interogarea asociată să fie FOR
UPDATE
. Această declarație actualizează rândul care tocmai a fost preluat.
Cursorul implicit SQL
și atributele cursorului %NOTFOUND
, %FOUND
, %ROWCOUNT
și %ISOPEN
vă permit să accesați informații utile despre execuția unui UPDATE
declarație.
Exemple
Exemplul 13-7 creează un tabel cu ID-urile corecte ale angajaților, dar cu nume greșite. Apoi rulează o instrucțiune UPDATE
cu o interogare corelată, pentru a prelua numele corecte din tabelul EMPLOYEES
și pentru a remedia numele din noul tabel .
Pentru exemple, consultați următoarele:
Exemplul 1-12, „Crearea unui subprogram stocat”
Exemplul 4-1, „Utilizarea unei instrucțiuni simple IF-THEN”
Exemplul 5-51, „Actualizarea unui rând folosind o înregistrare”
Exemplul 5-52, „Utilizarea clauzei RETURNING cu o înregistrare”
Exemplul 6-1, „Manipularea datelor cu PL / SQL”
Exemplul 6-5, „Utilizarea CURRVAL și NEXTVAL”
Exemplul 6-6, „Utilizarea ROWNUM”
Exemplul 6-38, „Utilizarea SAVEPOINT cu ROLLBACK”
Exemplul 6-41, „Utilizarea CURENTULUI OF pentru a actualiza ultimul rând preluat de la un cursor „
Exemplul 7-1,” Exemple de SQL dinamic „
Exemplul 7-5,” SQL dinamic cu RETURNING BULK COLLECT INTO Clause „
Exemplul 7-6 , „Instrucțiune Dynamic SQL Inside FORALL”
Exemplul 11-6, „Utilizarea restituirilor cu FORALL”
Exemplul 11-9, „Operațiune în bloc care continuă în ciuda excepțiilor”
Subiecte conexe
„Manipulare date”
„Declarație ȘTERGERE”
„Declarație FETCH”
„Declarație INSERT”