65 domande e risposte all'intervista PL/SQL (2025)
Domande e risposte sull'intervista PL/SQL per le matricole
1) Cos'è PL SQL?
Oracle PL/SQL è un'estensione del linguaggio SQL che combina la potenza di manipolazione dei dati di SQL con la potenza di elaborazione del linguaggio procedurale per creare query SQL estremamente potenti. PL/SQL garantisce un'elaborazione continua delle istruzioni SQL migliorando la sicurezza, la portabilità e la robustezza del database.
PL/SQL sta per “Estensioni del linguaggio procedurale allo Structured Query Language”.
👉 Download gratuito del PDF: domande e risposte all'intervista PL/SQL
2) Distinguere tra % ROWTYPE e TYPE RECORD.
% TIPO RIGA viene utilizzato quando una query restituisce un'intera riga di una tabella o vista.
TIPO REGISTRAZIONE d'altra parte, viene utilizzato quando una query restituisce colonne di tabelle o viste diverse.
Per esempio. TIPO r_emp è RECORD (sno smp.smpno%tipo,snome smp snome%tipo)
e_rec smp %TIPO RIGA
Il cursore c1 seleziona smpno,dept da smp;
e_rec c1 %TIPO RIGA
3) Spiegare gli usi del cursore.
Il cursore è un'area privata denominata in SQL da cui è possibile accedere alle informazioni. Sono tenuti a elaborare ogni riga individualmente per le query che restituiscono più righe.
4) Mostra il codice di un cursore per loop.
Cursor dichiara %ROWTYPE come indice di loop implicitamente. Quindi apre un cursore, ottiene righe di valori dal set attivo nei campi del record e si chiude quando tutti i record sono elaborati.
Eg.
FOR smp_rec IN C1 LOOP totalsal=totalsal+smp_recsal; ENDLOOP;
5) Spiegare gli usi del trigger del database.
Un'unità di programma PL/SQL associata ad una particolare tabella di database è chiamata trigger di database. È utilizzato per:
1) Modifica dei dati di audit.
2) Registra gli eventi in modo trasparente.
3) Applicare regole aziendali complesse.
4) Mantenere le tabelle di replica
5) Derivare i valori delle colonne
6) Implementare autorizzazioni di sicurezza complesse
6) Quali sono i due tipi di eccezioni.
La parte di gestione degli errori del blocco PL/SQL è chiamata Eccezione. Hanno due tipi: definiti dall'utente e predefiniti.
7) Mostra alcune eccezioni predefinite.
DUP_VAL_ON_INDEX
ZERO_DIVIDE
NESSUN DATO TROVATO
TROPPE_MANY_ROWS
CURSOR_ALREADY_OPEN
NUMERO NON VALIDO
NON VALIDO_CURSOR
ERRORE_PROGRAMMA
TIMEOUT_SU_RISORSA
ERRORE_STORAGE
LOGON_DENIED
VALORE_ERRORE
ecc.
8) Spiegare Raise_application_error.
È una procedura del pacchetto DBMS_STANDARD che consente l'emissione di messaggi di errore definiti dall'utente dal trigger del database o dal sottoprogramma memorizzato.
9) Mostrare come vengono richiamate funzioni e procedure in un blocco PL SQL.
La funzione viene chiamata come parte di un'espressione.
total:=calculate_sal('b644')
La procedura è chiamata come una dichiarazione in PL / SQL.
calculate_bonus('b644');
10) Spiegare due tabelle virtuali disponibili al momento dell'esecuzione del trigger del database.
Le colonne della tabella vengono indicate come OLD.column_name e NEW.column_name.
Per i trigger correlati a INSERT, sono disponibili solo i valori NEW.column_name.
Per i trigger correlati a DELETE, sono disponibili solo i valori OLD.column_name.
Per i trigger correlati a UPDATE, sono disponibili entrambe le colonne della tabella.
11) Quali sono le regole da applicare ai NULL durante i confronti?
1) NULL non è mai VERO o FALSO
2) NULL non può essere uguale o diverso da altri valori
3) Se un valore in un'espressione è NULL, l'espressione stessa restituisce NULL ad eccezione dell'operatore di concatenazione (||)
12) Come viene compilato un processo di PL SQL?
Il processo di compilazione include processi di controllo della sintassi, associazione e generazione del codice P.
Il controllo della sintassi verifica la presenza di errori di compilazione nei codici PL SQL. Una volta corretti tutti gli errori, viene assegnato un indirizzo di archiviazione alle variabili che contengono i dati. Si chiama vincolante. Il codice P è un elenco di istruzioni per il motore SQL PL. Il codice P viene memorizzato nel database per i blocchi denominati e viene utilizzato alla successiva esecuzione.
13) Distinguere tra errori di sintassi ed errori di runtime.
Un errore di sintassi può essere facilmente rilevato da un compilatore PL/SQL. Ad esempio, ortografia errata.
Un errore di runtime viene gestito con l'aiuto della sezione di gestione delle eccezioni in an Blocco PL/SQL. Ad esempio, l'istruzione SELECT INTO, che non restituisce alcuna riga.
14) Spiegare Commit, Rollback e Savepoint.
Per un'istruzione COMMIT, vale quanto segue:
- Altri utenti possono vedere le modifiche ai dati apportate dalla transazione.
- I lock acquisiti dalla transazione vengono rilasciati.
- Il lavoro svolto dalla transazione diventa permanente.
Al termine della transazione viene emessa un'istruzione ROLLBACK e vale quanto segue.
- Il lavoro svolto in una transizione viene annullato come se non fosse mai stato rilasciato.
- Tutti i blocchi acquisiti dalla transazione vengono rilasciati.
Annulla tutto il lavoro svolto dall'utente in una transazione. Con SAVEPOINT è possibile annullare solo una parte della transazione.
15) Definire i cursori impliciti ed espliciti.
Un cursore è implicito per impostazione predefinita. L'utente non può controllare o elaborare le informazioni in questo cursore.
Se una query restituisce più righe di dati, il programma definisce un cursore esplicito. Ciò consente all'applicazione di elaborare ciascuna riga in sequenza man mano che il cursore la restituisce.
16) Spiegare l'errore della tabella mutante.
Si verifica quando un trigger tenta di aggiornare una riga che sta attualmente utilizzando. Il problema viene risolto utilizzando visualizzazioni o tabelle temporanee, quindi il database ne seleziona una e aggiorna l'altra.
17) Quando è necessaria una dichiarazione dichiarativa?
L'istruzione DECLARE viene utilizzata dai blocchi anonimi PL SQL come con procedure autonome e non memorizzate. Se viene utilizzato, deve essere il primo in un file autonomo.
18) Quanti trigger si possono applicare ad una tabella?
È possibile applicare un massimo di 12 trigger a una tabella.
19) Qual è l'importanza di SQLCODE e SQLERRM?
SQLCODE restituisce il valore del numero di errori per l'ultimo errore riscontrato mentre SQLERRM restituisce il messaggio per l'ultimo errore.
20) Se un cursore è aperto, come possiamo trovarlo in un blocco PL SQL?
è possibile utilizzare la variabile di stato del cursore %ISOPEN.
Domande di intervista PL/SQL per esperti
21) Mostra le due eccezioni del cursore PL/SQL.
Cursore_Già_Aperto
Cursore_invasivo
22) Quali operatori trattano NULL?
NVL converte NULL in un altro valore specificato.
var:=NVL(var2,'Hi');
IS NULL e IS NOT NULL possono essere utilizzati per verificare in modo specifico se il valore di una variabile è NULL o meno.
23) SQL*Plus dispone anche di un motore PL/SQL?
No, SQL*Plus non dispone di un motore PL/SQL incorporato. Pertanto, tutto il codice PL/SQL viene inviato direttamente al motore del database. È molto più efficiente poiché ogni affermazione non viene eliminata individualmente.
24) Quali pacchetti sono disponibili per gli sviluppatori PL SQL?
DBMS_ serie di pacchetti, ad esempio DBMS_PIPE, DBMS_DDL, DBMS_LOCK, DBMS_ALERT, DBMS_OUTPUT, DBMS_JOB, DBMS_UTILITY, DBMS_SQL, DBMS_TRANSACTION, UTL_FILE.
25) Spiegare 3 parti fondamentali di un trigger.
- Una dichiarazione o un evento scatenante.
- Una restrizione
- Un'azione
26) Cosa sono le funzioni dei caratteri?
INITCAP, UPPER, SUBSTR, LOWER e LENGTH sono tutte funzioni di carattere. Le funzioni di gruppo forniscono risultati in base a gruppi di righe anziché a singole righe. Sono MAX, MIN, AVG, CONTEGGIO e SOMMA.
27) Spiegare TTITLE e BTITLE.
Comandi TTITLE e BTITLE che controllano le intestazioni e i piè di pagina del report.
28) Mostra gli attributi del cursore di PL/SQL.
%ISOPEN:
Controlla se il cursore è aperto o meno
%ROWCOUNT:
Il numero di righe aggiornate, eliminate o recuperate.
%FOUND:
Controlla se il cursore ha recuperato qualche riga. È vero se le righe vengono recuperate
%NOT FOUND:
Controlla se il cursore ha recuperato qualche riga. È vero se le righe non vengono recuperate.
29) Cos'è un'intersezione?
Intersect è il prodotto di due tabelle ed elenca solo le righe corrispondenti.
30) Cosa sono le sequenze?
Le sequenze vengono utilizzate per generare numeri di sequenza senza un sovraccarico di blocco. Lo svantaggio è che il numero di sequenza viene perso se viene eseguito il rollback della transazione.
31) Come faresti riferimento ai valori delle colonne PRIMA e DOPO aver inserito ed eliminato i trigger?
Utilizzando la parola chiave "new.column name", i trigger possono fare riferimento ai valori delle colonne tramite la nuova raccolta. Utilizzando la parola chiave "old.column name", possono fare riferimento ai valori delle colonne della vecchia raccolta.
32) Quali sono gli usi delle parole chiave SYSDATE e USER?
SYSDATE si riferisce alla data di sistema del server corrente. È una pseudo colonna. Anche USER è una pseudo colonna ma si riferisce all'utente corrente che ha effettuato l'accesso alla sessione. Sono utilizzati per monitorare le modifiche che si verificano nella tabella.
33) In che modo ROWID aiuta a eseguire una query più velocemente?
ROWID è l'indirizzo logico di una riga, non è una colonna fisica. È composto dal numero del blocco dati, dal numero del file e dal numero della riga nel blocco dati. Pertanto, il tempo di I/O viene ridotto al minimo durante il recupero della riga e si traduce in una query più veloce.
34) A cosa servono i collegamenti ai database?
I collegamenti ai database vengono creati per creare comunicazioni tra vari database o ambienti diversi come test, sviluppo e produzione. I collegamenti al database sono di sola lettura per accedere anche ad altre informazioni.
35) Cosa fa il recupero di un cursore?
Il recupero di un cursore legge il set di risultati riga per riga.
36) Cosa fa la chiusura di un cursore?
La chiusura di un cursore cancella l'area SQL privata e dealloca la memoria
37) Spiegare gli usi di Control File.
È un file binario. Registra la struttura del database. Include posizioni di diversi file di registro, nomi e timestamp. Possono essere archiviati in posizioni diverse per facilitare il recupero delle informazioni se un file viene danneggiato.
38) Spiegare la coerenza
La coerenza mostra che i dati non verranno visualizzati dagli altri utenti fino a quando non verranno confermati, in modo che la coerenza venga mantenuta.
39) Differenza tra blocchi anonimi e sottoprogrammi.
I blocchi anonimi sono blocchi senza nome che non vengono archiviati da nessuna parte mentre i sottoprogrammi vengono compilati e archiviati nel database. Sono compilati in fase di esecuzione.
40) Differenza tra DECODE e CASE.
Le istruzioni DECODE e CASE sono molto simili, ma CASE è la versione estesa di DECODE. DECODE non consente dichiarazioni decisionali al suo posto.
select decode(totalsal=12000,'high',10000,'medium') as decode_tesr from smp dove smpno in (10,12,14,16);
Questa istruzione restituisce un errore.
CASE viene utilizzato direttamente in PL SQL, ma DECODE viene utilizzato solo in PL SQL tramite SQL.
41) Spiegare la transazione autonoma.
Una transazione autonoma è una transazione indipendente dalla transazione principale o madre. Non è annidato se viene avviato da un'altra transazione.
Esistono diverse situazioni in cui utilizzare transazioni autonome come la registrazione e il controllo degli eventi.
42) Distinguere tra SGA e PGA.
SGA sta per System Global Area mentre PGA sta per Program o Process Global Area. A PGA viene allocato solo il 10% della dimensione della RAM, ma a SGA viene assegnata una dimensione della RAM del 40%.
43) Qual è la posizione delle funzioni_pre_definite.
Sono memorizzati nel pacchetto standard denominato “Funzioni, Procedure e Pacchetti”
44) Spiegare il polimorfismo in PL SQL.
Il polimorfismo è una caratteristica dell'OOP. È la capacità di creare una variabile, un oggetto o una funzione con più forme. PL/SQL supporta il polimorfismo sotto forma di sovraccarico dell'unità di programma all'interno di una funzione membro o di un pacchetto. È necessario evitare una logica inequivocabile durante l'esecuzione dell'overload.
45) Quali sono gli usi di MERGE?
MERGE viene utilizzato per combinare più istruzioni DML in una sola.
Sintassi: unisci in nometabella
utilizzando (interrogazione)
on(condizione di unione)
quando non abbinato allora
comando [inserisci/aggiorna/elimina].
quando abbinato allora
comando [inserisci/aggiorna/elimina].
Domande di intervista PL/SQL per oltre 5 anni di esperienza
46) È possibile eseguire due query contemporaneamente in un sistema di database distribuito?
Sì, possono essere eseguite simultaneamente. Una query è sempre indipendente dalla seconda query in un sistema di database distribuito basato sul commit in 2 fasi.
47) Spiegare Raise_application_error.
È una procedura del pacchetto DBMS_STANDARD che consente di emettere messaggi di errore definiti dall'utente dal trigger del database o dal sottoprogramma memorizzato.
48) Qual è il parametro out utilizzato anche se l'istruzione return può essere utilizzata anche in pl/sql?
I parametri Out consentono più di un valore nel programma chiamante. Il parametro Out non è consigliato nelle funzioni. È possibile utilizzare procedure al posto delle funzioni se sono richiesti più valori. Pertanto, queste procedure vengono utilizzate per eseguire i parametri Out.
49) Come convertiresti la data nel formato della data giuliana?
Possiamo usare la stringa di formato J:
SQL > select to_char(to_date('29-Mar-2013′,'dd-mon-yyyy'),'J') as julian from dual;
JULIAN
50) Spiega SPOOL
Il comando spool può stampare l'output delle istruzioni SQL in un file.
spool/tmp/sql_outtxt
select smp_name, smp_id from smp where dept='account';
sbobinare;
51) Menzionare in cosa consiste il pacchetto PL/SQL?
Un pacchetto PL/SQL è composto da
- Tabella PL/SQL e record di istruzioni TYPE
- Procedure e funzioni
- Cursori
- Variabili (tabelle, scalari, record, ecc.) e costanti
- Nomi di eccezioni e pragma per mettere in relazione un numero di errore con un'eccezione
- Cursori
52) Menzionare quali sono i vantaggi dei pacchetti PL/SQL?
Fornisce numerosi vantaggi come
- Nascondere informazioni forzate: Offre la libertà di scegliere se mantenere i dati privati o pubblici
- Progettazione dall'alto verso il basso: Puoi progettare l'interfaccia del codice nascosto nel pacchetto prima di implementare effettivamente i moduli stessi
- Persistenza dell'oggetto: Gli oggetti dichiarati nella specifica di un pacchetto si comportano come dati globali per tutti gli oggetti PL/SQL nell'applicazione. È possibile modificare il pacchetto in un modulo e quindi fare riferimento a tali modifiche in un altro modulo
- Progettazione orientata agli oggetti: Il pacchetto offre agli sviluppatori un forte controllo su come possono essere utilizzati i moduli e le strutture dati all'interno del pacchetto
- Garantire l'integrità della transazione: Fornisce un livello di integrità della transazione
- Miglioramento delle prestazioni: Le RDBMS tiene traccia automaticamente della validità di tutti gli oggetti del programma memorizzati nel database e migliora le prestazioni dei pacchetti.
53) Menzionare quali sono i diversi metodi per tracciare il codice PL/SQL?
Il codice di tracciamento è una tecnica cruciale per misurare le prestazioni del codice durante il runtime. Diversi metodi per la tracciabilità includono
- DBMS_APPLICATION_INFO
- DBMS_TRACE
- DBMS_SESSION e DBMS_MONITOR
- utilità trcsess e tkproof
54) Menziona cosa fa il profiler gerarchico?
Il profiler gerarchico potrebbe profilare le chiamate effettuate in PL/SQL, oltre a colmare il divario tra le scappatoie e le aspettative di tracciamento delle prestazioni. Le efficienze del profiler gerarchico includono
- Rapporti distinti per SQL e consumo di tempo PL/SQL
- Riporta il conteggio delle chiamate ai sottoprogrammi distinti effettuate in PL/SQL e il tempo trascorso con ciascuna chiamata al sottoprogramma
- Più report di analisi interattivi in formato HTML utilizzando l'utilità della riga di comando
- Più efficace del profiler convenzionale e di altre utilità di tracciamento
55) Menziona cosa ti consente di fare PLV msg?
Il messaggio PLV ti consente di farlo
- Assegna un singolo messaggio di testo alla riga specificata nella tabella PL/SQL
- Recupera il testo del messaggio per numero
- Sostituisce automaticamente i tuoi messaggi con quelli standard Oracle messaggi di errore con attivazione/disattivazione limitazione
- Caricamento batch di numeri e testo dei messaggi da una tabella di database direttamente dalla tabella PLV msg PL/SQL
56) Menzionare cosa offre il pacchetto PLV (PL/Vision)?
- Valore di sostituzione nullo
- Insieme di routine di asserzione
- Utilità varie
- Insieme di costanti utilizzate nella visione PL
- Tipi di dati predefiniti
57) Menzionare a cosa servono PLVprs e PLVprsps?
- PLVprs: È un'estensione per l'analisi delle stringhe per PL/SQL ed è il livello più basso di funzionalità di analisi delle stringhe
- PLVprsps: È il pacchetto di livello più alto per analizzare il codice sorgente PL/SQL in atomiche separate. Si basa su altri pacchetti di analisi per svolgere il lavoro.
58) Spiegare come è possibile copiare un file nel contenuto del file e file nella tabella PL/SQL in anticipo PL/SQL?
Con una sola chiamata di programma – “procedura di copia", è possibile copiare il contenuto completo di un file in un altro file. Mentre per copiare il contenuto di un file direttamente in una tabella PL/SQL è possibile utilizzare il programma “file2pstab”.
59) Spiegare come viene eseguita la gestione delle eccezioni in anticipo PL/SQL?
Per gestione delle eccezioni PL/SQL fornisce un plugin efficace PLVexc. PLVexc supporta quattro diverse azioni di gestione delle eccezioni.
- Continua l'elaborazione
- Registra e poi continua
- Interrompere l'elaborazione
- Registrare e quindi interrompere l'elaborazione
Per quelle eccezioni che si ripetono è possibile utilizzare l'istruzione RAISE.
60) Menziona quale problema si potrebbe incontrare durante la scrittura delle informazioni di registro su una tabella di database in PL/SQL?
Durante la scrittura delle informazioni di log in una tabella di database, il problema che si riscontra è che le informazioni sono disponibili solo una volta che le nuove righe sono state inviate al database. Questo potrebbe essere un problema in quanto PLVlog viene solitamente distribuito per tracciare gli errori e in molti casi di questo tipo la transazione corrente fallirebbe o altrimenti avrebbe bisogno di un rollback.
61) Menzionare qual è la funzione utilizzata per trasferire un registro di tabella PL/SQL in una tabella di database?
Per trasferire una tabella PL/SQL, registrare una funzione di tabella di registro del database “PROCEDURA ps2db” viene utilizzato.
62) Quando è necessario utilizzare un punto di salvataggio predefinito "rollback to" di PLVlog?
Il punto di salvataggio predefinito "rollback su" di PLVlog viene utilizzato quando gli utenti hanno attivato l'attività di rollback e non hanno fornito un punto di salvataggio alternativo nella chiamata a put_line. Il punto di salvataggio predefinito viene inizializzato sulla costante c none.
63) Perché PLVtab è considerato il modo più semplice per accedere alla tabella PL/SQL?
Le tabelle PL/SQL sono le più vicine agli array in PL/SQL e per accedere a questa tabella devi prima dichiarare un tipo di tabella, quindi devi dichiarare la tabella PL/SQL stessa. Ma utilizzando PLVtab, puoi evitare di definire il tuo tipo di tabella PL/SQL e semplificare l'accesso alle tabelle dati PL/SQL.
64) Menziona cosa ti consente di fare PLVtab quando mostri il contenuto delle tabelle PL/SQL?
PLVtab consente di eseguire le seguenti operazioni quando si visualizza il contenuto delle tabelle PL/SQL
- Visualizza o sopprime un'intestazione per la tabella
- Visualizza o sopprimi i numeri di riga per i valori della tabella
- Mostra un prefisso prima di ogni riga della tabella
65) Spiega come puoi salvare o inserire il tuo messaggio in una tabella?
Per salvare i messaggi in una tabella, puoi farlo in due modi
- Carica singoli messaggi con chiamate al
add_text
procedura - Carica set di messaggi da una tabella di database con il file
load_from_dbms
procedura
66) Menzionare qual è l'uso della funzione “procedura modulo” in PL/SQL?
La “procedura modulo” consente di convertire tutte le righe di codice in una definita unità di programma con una sola chiamata di procedura. Ci sono tre argomenti per i moduli
- modulo_in
- cor_in
- Ultimo_modulo_in
67) Menzionare cosa fanno PLVcmt e PLVrb in PL/SQL?
PL/Vision offre due pacchetti che aiutano a gestire l'elaborazione delle transazioni nell'applicazione PL/SQL. Si tratta di PLVcmt e PLVrb.
- PLVcmt: Il pacchetto PLVcmt racchiude la logica e la complessità per gestire l'elaborazione dei commit
- PLVRb: Fornisce un'interfaccia programmatica per eseguire il rollback dell'attività in PL/SQL
Queste domande del colloquio ti aiuteranno anche nel tuo viva(orale)