Oracle PL/SQL Inserisci, aggiorna, elimina e seleziona in [Esempio]
In questo tutorial impareremo come usarlo SQL inPL/SQL. SQL è il componente effettivo che si occupa del recupero e dell'aggiornamento dei dati nel database mentre PL/SQL è il componente che elabora questi dati. Inoltre, in questo articolo discuteremo anche di come combinare l'SQL all'interno del blocco PL/SQL.
Transazioni DML in PL/SQL
DML sta per Linguaggio di manipolazione dei dati. Queste dichiarazioni vengono utilizzate principalmente per eseguire l'attività di manipolazione. Si occupa delle seguenti operazioni.
- Inserimento dati
- Aggiornamento dei dati
- Cancellazione dei dati
- Selezione dei dati
In PL/SQL, possiamo eseguire la manipolazione dei dati solo utilizzando i comandi SQL.
Inserimento dati
In PL/SQL, possiamo inserire i dati in qualsiasi tabella utilizzando il comando SQL INSERT INTO. Questo comando prenderà il nome della tabella, la colonna della tabella e i valori della colonna come input e inserirà il valore nella tabella di base.
Il comando INSERT può anche prendere i valori direttamente da un'altra tabella utilizzando l'istruzione 'SELECT' anziché fornire i valori per ciascuna colonna. Attraverso l'istruzione 'SELECT', possiamo inserire tante righe quante ne contiene la tabella base.
Sintassi:
BEGIN INSERT INTO <table_name>(<column1 >,<column2>,...<column_n>) VALUES(<valuel><value2>,...:<value_n>); END;
- La sintassi precedente mostra il comando INSERT INTO. Il nome e i valori della tabella sono campi obbligatori, mentre i nomi delle colonne non sono obbligatori se le istruzioni di inserimento hanno valori per tutte le colonne della tabella.
- La parola chiave "VALUES" è obbligatoria se i valori vengono forniti separatamente come mostrato sopra.
Sintassi:
BEGIN INSERT INTO <table_name>(<columnl>,<column2>,...,<column_n>) SELECT <columnl>,<column2>,.. <column_n> FROM <table_name2>; END;
- La sintassi precedente mostra il comando INSERT INTO che prende i valori direttamente dal file utilizzando il comando SELEZIONA.
- La parola chiave "VALORI" non dovrebbe essere presente in questo caso poiché i valori non vengono forniti separatamente.
Aggiornamento dei dati
L'aggiornamento dei dati significa semplicemente un aggiornamento del valore di qualsiasi colonna nella tabella. Questo può essere fatto utilizzando l'istruzione 'UPDATE'. Questa istruzione prende il nome della tabella, il nome della colonna e il valore come input e aggiorna i dati.
Sintassi:
BEGIN UPDATE <table_name> SET <columnl>=<VALUE1>,<column2>=<value2>,<column_n>=<value_n> WHERE <condition that uniquely identifies the record that needs to be update>; END;
- La sintassi precedente mostra UPDATE. La parola chiave "SET" indica al motore PL/SQL di aggiornare il valore della colonna con il valore fornito.
- La clausola "WHERE" è facoltativa. Se questa clausola non viene fornita, verrà aggiornato il valore della colonna menzionata nell'intera tabella.
Cancellazione dei dati
La cancellazione dei dati significa cancellare un record completo dalla tabella del database. A questo scopo viene utilizzato il comando 'DELETE'.
Sintassi:
BEGIN DELETE FROM <table_name> WHERE <condition that uniquely identifies the record that needs to be update>; END;
- La sintassi precedente mostra il comando DELETE. La parola chiave 'FROM' è facoltativa e con o senza la clausola 'FROM' il comando si comporta allo stesso modo.
- La clausola "WHERE" è facoltativa. Se questa clausola non viene fornita, l'intera tabella verrà eliminata.
Selezione dei dati
Proiezione/recupero dei dati significa recuperare i dati richiesti dalla tabella del database. Ciò può essere ottenuto utilizzando il comando 'SELECT' con la clausola 'INTO'. Il comando 'SELECT' recupererà i valori dal database e la clausola 'INTO' assegnerà questi valori alla variabile locale del Blocco PL/SQL.
Di seguito sono riportati i punti che devono essere considerati nell'istruzione 'SELECT'.
- L'istruzione 'SELECT' dovrebbe restituire solo un record mentre si utilizza la clausola 'INTO' poiché una variabile può contenere solo un valore. Se l'istruzione 'SELECT' restituisce più di un valore, verrà sollevata l'eccezione 'TOO_MANY_ROWS'.
- L'istruzione 'SELECT' assegnerà il valore alla variabile nella clausola 'INTO', quindi è necessario ottenere almeno un record dalla tabella per popolare il valore. Se non ha ricevuto alcun record, viene sollevata l'eccezione 'NO_DATA_FOUND'.
- Il numero di colonne e il relativo tipo di dati nella clausola 'SELECT' deve corrispondere al numero di variabili e i relativi tipi di dati nella clausola 'INTO'.
- I valori vengono recuperati e popolati nello stesso ordine indicato nell'istruzione.
- La clausola 'WHERE' è facoltativa e consente di avere maggiori restrizioni sui record che verranno recuperati.
- L'istruzione 'SELECT' può essere utilizzata nella condizione 'WHERE' di altre istruzioni DML per definire i valori delle condizioni.
- L'istruzione 'SELECT' quando si utilizzano le istruzioni 'INSERT', 'UPDATE', 'DELETE' non dovrebbe avere la clausola 'INTO' poiché in questi casi non popolerà alcuna variabile.
Sintassi:
BEGIN SELECT <columnl>,..<column_n> INTO <vanable 1 >,. .<variable_n> FROM <table_name> WHERE <condition to fetch the required records>; END;
- La sintassi precedente mostra il comando SELECT-INTO. È obbligatoria la parola chiave "FROM" che identifica il nome della tabella da cui devono essere recuperati i dati.
- La clausola "WHERE" è facoltativa. Se questa clausola non viene fornita, verranno recuperati i dati dell'intera tabella.
esempio 1: In questo esempio vedremo come eseguire operazioni DML in PL / SQL. Inseriremo i quattro record seguenti nella tabella emp.
EMP_NAME | EMP_NO | STIPENDIO | MANAGER |
---|---|---|---|
BBB | 1000 | 25000 | AAA |
XXX | 1001 | 10000 | BBB |
AAAA | 1002 | 10000 | BBB |
ZZZ | 1003 | 7500 | BBB |
Quindi aggiorneremo lo stipendio di 'XXX' a 15000 e cancelleremo il record del dipendente 'ZZZ'. Infine, proietteremo i dettagli del dipendente 'XXX'.
DECLARE l_emp_name VARCHAR2(250); l_emp_no NUMBER; l_salary NUMBER; l_manager VARCHAR2(250); BEGIN INSERT INTO emp(emp_name,emp_no,salary,manager) VALUES(‘BBB’,1000,25000,’AAA’); INSERT INTO emp(emp_name,emp_no,salary,manager) VALUES('XXX',1001,10000,’BBB); INSERT INTO emp(emp_name,emp_no,salary,managed VALUES(‘YYY',1002,10000,'BBB'); INSERT INTO emp(emp_name,emp_no,salary,manager) VALUES(‘ZZZ',1003,7500,'BBB'): COMMIT; Dbms_output.put_line(‘Values Inserted'); UPDATE EMP SET salary=15000 WHERE emp_name='XXX'; COMMIT; Dbms_output.put_line(‘Values Updated'); DELETE emp WHERE emp_name='ZZZ'; COMMIT: Dbms_output.put_line('Values Deleted ); SELECT emp_name,emp_no,salary,manager INTO l_emp_name,l_emp_no,l_salary,l_manager FROM emp WHERE emp_name='XXX'; Dbms output.put line(‘Employee Detail’); Dbms_output.put_line(‘Employee Name:‘||l_emp_name); Dbms_output.put_line(‘Employee Number:‘||l_emp_no); Dbms_output.put_line(‘Employee Salary:‘||l_salary); Dbms output.put line(‘Emplovee Manager Name:‘||l_manager): END; /
Produzione:
Values Inserted Values Updated Values Deleted Employee Detail Employee Name:XXX Employee Number:1001 Employee Salary:15000 Employee Manager Name:BBB
Spiegazione del codice:
- Riga di codice 2-5: Dichiarazione della variabile.
- Riga di codice 7-14: Inserimento dei record nella tabella emp.
- Riga di codice 15: Conferma delle transazioni di inserimento.
- Riga di codice 17-19: Aggiornamento dello stipendio del dipendente 'XXX' a 15000
- Riga di codice 20: conferma della transazione di aggiornamento.
- Riga di codice 22: Eliminazione della registrazione di 'ZZZ'
- Riga di codice 23: Conferma della transazione di eliminazione.
- Riga di codice 25-27: Selezionando il record di 'XXX' e compilando la variabile l_emp_name, l_emp_no, l_salary, l_manager.
- Riga di codice 28-32: Visualizzazione del valore dei record recuperati.