DOMANDE PL-SQL Flashcards
- Cos’è PL / SQL?
PL / SQL (Procedural Language / SQL) è fondamentalmente un’estensione procedurale di Oracle - SQL. PL / SQL aiuta l’utente a sviluppare complesse applicazioni di database utilizzando strutture di controllo, procedure, funzioni, moduli, ecc.
Differenziare PL / SQL e SQL?
VEDI APPUNTI
Elenca le caratteristiche di PL / SQL?
Le caratteristiche di PL / SQL sono le seguenti:
PL / SQL consente l’accesso e la condivisione degli stessi sottoprogrammi da più applicazioni.
È noto per la portabilità del codice in quanto il codice può essere eseguito su qualsiasi sistema operativo a condizione che Oracle sia caricato su di esso.
Con PL / SQL gli utenti possono scrivere le proprie routine personalizzate di gestione degli errori. Prestazioni delle transazioni migliorate con l’integrazione con il dizionario dati Oracle
Quali sono i tipi di dati disponibili in PL / SQL?
Risposta: I tipi di dati definiscono i modi per identificare il tipo di dati e le operazioni associate. Ci sono 4 tipi di tipi di dati predefiniti spiegati come segue:
* Tipi di dati scalari: Un tipo di dati scalare è un tipo di dati atomico che non ha componenti interni.
* Per esempio
CHAR (intervallo di valori dei caratteri a lunghezza fissa compreso tra 1 e 32.767 caratteri)
VARCHAR2 (intervallo di valori dei caratteri a lunghezza variabile compreso tra 1 e 32.767 caratteri)
NUMERO (valori decimali fissi, decimali mobili o interi)
BOOLEANO (tipo di dati logico per valori TRUE FALSE o NULL)
DATA (memorizza le informazioni su data e ora)
LONG (dati carattere di lunghezza variabile)
* Tipi di dati compositi: Un tipo di dati composito è costituito da altri tipi di dati e componenti interni che possono essere facilmente utilizzati e manipolati. Per esempio, RECORD, TABLE e VARRAY.
* Tipi di dati di riferimento: Un tipo di dati di riferimento contiene valori, chiamati puntatori che designano altri elementi di programma o elementi di dati. Per esempio, RIF CURSORE.
* Tipi di dati per oggetti di grandi dimensioni: Un tipo di dati Oggetto grande contiene valori, chiamati localizzatori, che definiscono la posizione di oggetti di grandi dimensioni (come clip video, immagini grafiche, ecc.) Memorizzati fuori linea.
* Per esempio
BFILE (file binario)
BLOB (oggetto binario di grandi dimensioni)
CLOB (Character large object)
NCLOB (oggetto grande di tipo NCHAR)
Spiegare lo scopo dei tipi di dati% TYPE e% ROWTYPE con l’esempio?
Risposta: PL / SQL utilizza l’attributo di dichiarazione% TYPE per l’ancoraggio. Questo attributo fornisce il tipo di dati di una variabile, costante o colonna. L’attributo% TYPE è utile durante la dichiarazione di una variabile con lo stesso tipo di dati di una colonna della tabella.
Per esempio, la variabile m_empno ha lo stesso tipo di dati e dimensione della colonna empno nella tabella emp.
m_empno emp.empno%TYPE;
L’attributo% ROWTYPE viene utilizzato per dichiarare una variabile come un record con la stessa struttura di una riga in una tabella. La riga è definita come record ei suoi campi hanno gli stessi nomi e tipi di dati delle colonne nella tabella o nella vista.
Per esempio:
dept_rec dept%ROWTYPE;
Cosa intendi per i pacchetti PL / SQL?
I pacchetti PL / SQL sono oggetti schema che raggruppano funzioni, stored procedure, cursori e variabili in un unico posto.
I pacchetti hanno 2 parti obbligatorie:
Specifiche del pacchetto
Corpo del pacchetto
Cosa intendi per i cursori PL / SQL?
Risposta: PL / SQL richiede una capacità speciale per recuperare ed elaborare più di una riga e tale risorsa è nota come cursori. Un cursore è un puntatore all’area del contesto, che è un’area di memoria contenente istruzioni SQL e informazioni per l’elaborazione delle istruzioni.
Il cursore PL / SQL è fondamentalmente un meccanismo in base al quale vengono selezionate più righe di dati dal database e quindi ogni riga viene elaborata individualmente all’interno di un programma.
Spiega i tipi di cursore
Esistono due tipi di cursori.
Sono spiegati come segue:
a) Cursori espliciti: Per le query che restituiscono più di una riga, un cursore esplicito viene dichiarato e denominato da un programmatore. Per utilizzare il cursore esplicito in PL / SQL, vengono seguiti 4 passaggi
Dichiara il cursore
Sintassi: CURSOR è
Istruzione SELECT;
Qui, è il nome assegnato al cursore e l’istruzione SELECT è la query che restituisce le righe al set attivo del cursore.
Apri il cursore
Sintassi: APERTO ;
Dove, è il nome del cursore definito in precedenza.
Recupera le righe dal cursore
Sintassi: FETCH INTO;
Qui, fa riferimento al nome del cursore definito in precedenza da cui vengono recuperate le righe.
rappresenta l’elenco delle variabili che riceveranno i dati recuperati.
Chiusura del cursore
Sintassi: VICINO ;
Ecco il nome del cursore che viene chiuso.
b) Cursori impliciti: Quando viene eseguita un’istruzione SQL, PL / SQL crea automaticamente un cursore senza definire tali cursori sono noti come cursori impliciti.
Per le seguenti istruzioni, PL / SQL utilizza cursori impliciti
* INSERIRE
* AGGIORNARE
* ELIMINA
* SELECT (query che restituiscono esattamente una riga
Quando usiamo i trigger?
La parola ‘Trigger’ significa attivare. In PL / SQL, il trigger è una procedura memorizzata che definisce un’azione intrapresa dal database quando viene eseguito l’evento relativo al database.
I trigger sono richiesti principalmente per i seguenti scopi:
Per mantenere complessi vincoli di integrità
Controllo delle informazioni della tabella registrando le modifiche
Segnalazione di altre azioni del programma quando vengono apportate modifiche alla tabella
Applicazione di regole aziendali complesse
Prevenire transazioni non valide
Spiega la differenza nell’esecuzione di trigger e stored procedure?
Risposta: Una stored procedure viene eseguita esplicitamente emettendo un’istruzione di chiamata di procedura da un altro blocco tramite una chiamata di procedura con argomenti.
Il trigger viene eseguito in modo implicito ogni volta che si verifica un evento di attivazione come il verificarsi di istruzioni DML.
Spiega la differenza tra trigger e vincoli
VEDI APPUNTI PAG 7
Cos’è un blocco PL / SQL?
In PL / SQL, le istruzioni sono raggruppate in unità chiamate Blocchi. I blocchi PL / SQL possono includere costanti, variabili, istruzioni SQL, cicli, istruzioni condizionali, gestione delle eccezioni. I blocchi possono anche costruire una procedura, una funzione o un pacchetto.
Quanti tipi di blocchi esistono?
(i) Blocchi anonimi: I blocchi PL / SQL senza intestazione sono noti come blocchi anonimi. Questi blocchi non costituiscono il corpo di una procedura, funzione o trigger.
(ii) Blocchi denominati: I blocchi PL / SQL con intestazione o etichette sono noti come blocchi con nome. I blocchi con nome possono essere sottoprogrammi (procedure, funzioni, pacchetti) o Trigger.
Esempio:
FUNCTION sqr (num IN NUMBER) RETURN NUMBER is sq NUMBER(2); BEGIN sq:= num*num; RETURN sq; END;
Distinguere tra errori di sintassi ed errori di runtime?
Errori di sintassi sono quelli che possono essere facilmente identificati da un compilatore PL / SQL. Questi errori possono essere un errore di ortografia, ecc.
Errori di runtime sono quegli errori nel blocco PL / SQL per i quali deve essere inclusa una sezione di gestione delle eccezioni per la gestione degli errori. Questi errori possono essere l’istruzione SELECT INTO che non restituisce alcuna riga.
Cosa sono COMMIT, ROLLBACK e SAVEPOINT?
COMMIT, SAVEPOINT e ROLLBACK sono tre specifiche di transazione disponibili in PL / SQL.
Dichiarazione COMMIT: Quando viene eseguita l’operazione DML, manipola solo i dati nel buffer del database e il database rimane inalterato da queste modifiche. Per salvare / memorizzare queste modifiche alla transazione nel database, è necessario COMMIT la transazione. La transazione COMMIT salva tutte le modifiche in sospeso dall’ultimo COMMIT e si verifica il seguente processo
I blocchi delle righe interessate vengono rilasciati
Transazione contrassegnata come completata
I dettagli della transazione vengono memorizzati nel dizionario dei dati.
Sintassi: COMMIT;
Dichiarazione ROLLBACK: Quando vogliamo annullare o cancellare tutte le modifiche che si sono verificate nella transazione corrente fino ad ora, è necessario eseguire il rollback della transazione. In altre parole, ROLLBACK cancella tutte le modifiche in sospeso dall’ultimo COMMIT o ROLLBACK. Sintassi per eseguire il rollback completo di una transazione:
ROLLBACK;
Dichiarazione SAVEPOINT: L’istruzione SAVEPOINT fornisce un nome e contrassegna un punto nell’elaborazione della transazione corrente. Le modifiche e i blocchi che si sono verificati prima del SAVEPOINT nella transazione vengono conservati mentre vengono rilasciati quelli che si verificano dopo il SAVEPOINT.
Sintassi:
SAVEPOINT;