Listruzione UPDATE
modifica i valori delle colonne specificate in una o più righe in una tabella o vista. Per una descrizione completa dellistruzione SQL UPDATE
, vedere Oracle Database SQL Reference.
Sintassi
istruzione update :: =
Descrizione dellillustrazione update_statement.gif
Parola chiave e descrizione del parametro
alias
Un altro nome (solitamente breve) per la tabella o la vista di riferimento, tipicamente utilizzato nella clausola WHERE
.
nome_colonna
La colonna (o una delle colonne) da aggiornare. Deve essere il nome di una colonna nella tabella o vista di riferimento. Il nome di una colonna non può essere ripetuto nellelenco column_name
. I nomi delle colonne non devono essere visualizzati nellistruzione UPDATE
nello stesso ordine in cui compaiono nella tabella o nella vista.
return_clause
Restituisce i valori dalle righe aggiornate, eliminando la necessità di SELECT
le righe in seguito. È possibile recuperare i valori delle colonne in variabili o variabili host oppure in raccolte o array host. Non è possibile utilizzare la clausola RETURNING
per aggiornamenti remoti o paralleli. Se listruzione non influisce su alcuna riga, i valori delle variabili specificate nella clausola RETURNING
non sono definiti. Per la sintassi di returning_clause
, vedere “RETURNING INTO Clause”.
SET column_name = sql_expression
Questa clausola assegna il valore di sql_expression
alla colonna identificata da column_name
. Se sql_expression
contiene riferimenti a colonne nella tabella in fase di aggiornamento, i riferimenti vengono risolti nel contesto della riga corrente. I valori della vecchia colonna vengono utilizzati a destra del segno di uguale.
SET column_name = (subquery3)
Assegna il valore recuperato dal database da subquery3
alla colonna identificata da column_name
. La sottoquery deve restituire esattamente una riga e una colonna.
SET (column_name, column_name, …) = (subquery4)
Assegna i valori recuperati dal database da subquery4
alle colonne nellelenco column_name
. La sottoquery deve restituire esattamente una riga che include tutte le colonne elencate. I valori di colonna restituiti dalla sottoquery vengono assegnati alle colonne nellelenco delle colonne in ordine. Il primo valore viene assegnato alla prima colonna nellelenco, il secondo valore viene assegnato alla seconda colonna nellelenco e così via.
sql_expression
Qualsiasi espressione SQL valida. Per ulteriori informazioni, vedere Oracle Database SQL Reference.
sottoquery
Unistruzione SELECT
che fornisce una serie di righe per lelaborazione. La sua sintassi è simile a quella di select_into_statement
senza la clausola INTO
. Vedere “Istruzione SELECT INTO”.
table_reference
Una tabella o una vista che deve essere accessibile quando si esegue listruzione UPDATE
e per che devi avere i privilegi di UPDATE
. Per la sintassi di table_reference
, vedere “Istruzione DELETE”.
TABLE (subquery2)
Loperando di TABLE
è unistruzione SELECT
che restituisce un singolo valore di colonna, che deve essere una tabella nidificata o un varray. Loperatore TABLE
informa Oracle che il valore è una raccolta, non un valore scalare.
WHERE CURRENT OF cursor_name
Si riferisce allultima riga elaborato dallistruzione FETCH
associata al cursore specificato. Il cursore deve essere FOR
UPDATE
e deve essere aperto e posizionato su una riga. Se il cursore non è aperto, la clausola CURRENT
OF
causa un errore. Se il cursore è aperto, ma nessuna riga è stata recuperata o lultimo recupero non ha restituito alcuna riga, PL / SQL solleva leccezione predefinita NO_DATA_FOUND
.
WHERE search_condition
Sceglie quali righe aggiornare nella tabella del database. Vengono aggiornate solo le righe che soddisfano la condizione di ricerca. Se ometti questa clausola, tutte le righe della tabella vengono aggiornate.
Note sullutilizzo
Puoi utilizzare UPDATE
WHERE
CURRENT
OF
dopo un recupero da un cursore aperto (inclusi i recuperi eseguiti da un cursore FOR
loop), a condizione che la query associata sia FOR
UPDATE
. Questa istruzione aggiorna la riga che è stata appena recuperata.
Il cursore implicito SQL
e gli attributi del cursore %NOTFOUND
, %FOUND
, %ROWCOUNT
e %ISOPEN
consentono di accedere a informazioni utili sullesecuzione di un UPDATE
istruzione.
Esempi
Lesempio 13-7 crea una tabella con gli ID dei dipendenti corretti ma i nomi confusi. Quindi esegue unistruzione UPDATE
con una query correlata, per recuperare i nomi corretti dalla tabella EMPLOYEES
e correggere i nomi nella nuova tabella .
Per esempi, vedere quanto segue:
Esempio 1-12, “Creazione di un sottoprogramma memorizzato”
Esempio 4-1, “Utilizzo di unistruzione IF-THEN semplice”
Esempio 5-51, “Aggiornamento di una riga utilizzando un record”
Esempio 5-52, “Utilizzo della clausola RETURNING con un record”
Esempio 6-1, “Manipolazione dei dati con PL / SQL”
Esempio 6-5, “Utilizzo di CURRVAL e NEXTVAL”
Esempio 6-6, “Utilizzo di ROWNUM”
Esempio 6-38, “Utilizzo di SAVEPOINT con ROLLBACK”
Esempio 6-41, “Utilizzo di CURRENT OF per aggiornare lultima riga recuperata da un cursore “
Esempio 7-1,” Esempi di SQL dinamico “
Esempio 7-5,” SQL dinamico con clausola RETURNING BULK COLLECT INTO “
Esempio 7-6 , “Istruzione Dynamic SQL Inside FORALL”
Esempio 11-6, “Utilizzo di rollback con FORALL”
Esempio 11-9, “Operazione in blocco che continua nonostante le eccezioni”
Argomenti correlati
“Manipolazione dati”
“Istruzione DELETE”
“Istruzione FETCH”
“Istruzione INSERT”