DOMANDE PL-SQL Flashcards

1
Q
  1. Cos’è PL / SQL?
A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Differenziare PL / SQL e SQL?

A

VEDI APPUNTI

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Elenca le caratteristiche di PL / SQL?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Quali sono i tipi di dati disponibili in PL / SQL?

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Spiegare lo scopo dei tipi di dati% TYPE e% ROWTYPE con l’esempio?

A

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;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Cosa intendi per i pacchetti PL / SQL?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Cosa intendi per i cursori PL / SQL?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Spiega i tipi di cursore

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Quando usiamo i trigger?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Spiega la differenza nell’esecuzione di trigger e stored procedure?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Spiega la differenza tra trigger e vincoli

A

VEDI APPUNTI PAG 7

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Cos’è un blocco PL / SQL?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Quanti tipi di blocchi esistono?

A

(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;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Distinguere tra errori di sintassi ed errori di runtime?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Cosa sono COMMIT, ROLLBACK e SAVEPOINT?

A

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;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q
  1. Cosa sono la tabella mutante e la tabella vincolante?
A

Una tabella che è attualmente modificata da un’istruzione DML come la definizione di trigger in una tabella è nota come Tavolo mutante .

Una tabella da cui potrebbe essere necessario leggere per un vincolo di integrità referenziale è nota come tabella vincolante .

17
Q

Quali sono i parametri effettivi e i parametri formali?

A

Le variabili o un’espressione denominate parametri che appaiono nell’istruzione di chiamata della procedura sono note come Parametri effettivi.

Per esempio: raise_sal (emp_num, merito + importo);
Nell’esempio precedente, emp_num e amount sono i due parametri effettivi.

Le variabili dichiarate nell’intestazione della procedura e a cui si fa riferimento nel corpo della procedura vengono chiamate come Parametri formali.

Per esempio:
PROCEDURA raise_sal (emp_id INTEGER) È
curr_sal REAL:
……… ..
INIZIO
SELEZIONA sal INTO cur_sal FROM emp WHERE empno = emp_id;
…….
END raise_sal;
Nell’esempio sopra, emp_id funge da parametro formale.

18
Q

Qual è la differenza tra le istruzioni ROLLBACK e ROLLBACK TO?

A

La transazione è completamente terminata dopo l’istruzione ROLLBACK, ovvero il comando ROLLBACK annulla completamente una transazione e rilascia tutti i blocchi.

D’altra parte, una transazione è ancora attiva e in esecuzione dopo il comando ROLLBACK TO poiché annulla solo una parte della transazione fino al SAVEPOINT specificato

19
Q

Scrivi uno script PL / SQL per visualizzare la seguente serie di numeri: 99,96,93 …… 9,6,3?

A

SET SERVER OUTPUT ON DECLARE BEGIN FOR i IN REVERSE 1..99 LOOP IF Mod(i,3) = 0 THEN DBMS_OUTPUT.PUT_LINE(i); END IF; END LOOP; END;

20
Q
  1. Quali sono le 3 modalità di parametro
A

Parametri IN: I parametri IN consentono di passare valori alla procedura chiamata e possono essere inizializzati a valori predefiniti. I parametri IN funzionano come una costante e non possono essere assegnati alcun valore.

Parametri OUT: I parametri OUT restituiscono valore al chiamante e devono essere specificati. I parametri OUT agiscono come una variabile non inizializzata e non possono essere utilizzati in un’espressione.

Parametri IN OUT: I parametri IN OUT passano i valori iniziali a una procedura e restituiscono i valori aggiornati al chiamante. I parametri IN OUT agiscono come una variabile inizializzata e devono essere assegnati un valore.

21
Q

Perché% ISOPEN è sempre falso per un cursore implicito?

A

Un cursore implicito, l’attributo SQL% ISOPEN è sempre falso perché il cursore implicito viene aperto per un’istruzione DML e viene chiuso immediatamente dopo l’esecuzione dell’istruzione DML.

22
Q

Quando viene eseguita un’istruzione DML, in quali attributi del cursore viene salvato il risultato dell’istruzione

A

Il risultato dell’istruzione viene salvato in 4 attributi del cursore.
Questi sono:
SQL% TROVATO
SQL% NON TROVATO
SQL% ROWCOUNT
SQL% ISOPEN

23
Q

Quali sono i modi per commentare in un codice PL / SQL?

A

I commenti sono il testo incluso nel codice per migliorare la leggibilità e per la comprensione del lettore. Questi codici non vengono mai eseguiti.
Esistono due modi per commentare in PL / SQL:
1) Commento a riga singola: Questo commento inizia con il doppio -.
2) Commento su più righe: Questo commento inizia con / * e termina con * /.

24
Q

Cosa si intende per gestione delle eccezioni in PL / SQL?

A

Quando si verifica un errore in PL / SQL, viene sollevata l’eccezione. In altre parole, per gestire situazioni indesiderate in cui gli script PL / SQL sono terminati in modo imprevisto, nel programma è incluso un codice di gestione degli errori. In PL / SQL, tutto il codice di gestione delle eccezioni viene inserito in una sezione EXCEPTION.
Esistono 3 tipi di ECCEZIONE:

Eccezioni predefinite: Errori comuni con nomi predefiniti.

Eccezioni non definite: Errori meno comuni senza nomi predefiniti.

Eccezioni definite dall’utente: Non causare errori di runtime ma violare le regole aziendali

25
Q

Elenca alcune eccezioni predefinite?

A

NESSUN DATO TROVATO: Istruzione SELECT a riga singola in cui non vengono restituiti dati.
TOO_MANY_ROWS: Istruzione SELECT a riga singola in cui vengono restituite più righe.
INVALID_CURSOR: Si è verificata un’operazione di cursore illegale.
ZERO_DIVIDE: Tentativo di dividere per zero.

26
Q

Cosa sono le eccezioni del cursore PL / SQL?

A

Le eccezioni relative ai cursori PL / SQL sono:
CURSOR_ALREADY_OPEN
INVALID_CURSOR

27
Q
  1. Spiegare la differenza tra il cursore dichiarato nelle procedure e i cursori dichiarati nella specifica del pacchetto
A

Il cursore dichiarato nella procedura viene trattato come locale e quindi non è accessibile da altre procedure.
Il cursore dichiarato nella specifica del pacchetto viene trattato come globale e quindi è possibile accedervi da altre procedure.

28
Q

Cosa sono i trigger INSTEAD OF?

A

I trigger INSTEAD OF sono i trigger scritti appositamente per modificare le viste, che non possono essere modificate direttamente tramite istruzioni SQL DML.

29
Q

Cosa sono le espressioni?

A

Le espressioni sono rappresentate da una sequenza di valori letterali e variabili separati da operatori.
In PL / SQL, le operazioni vengono utilizzate per manipolare, confrontare e calcolare alcuni dati.
Un’espressione è una composizione di ‘Operatori’ e ‘Operandi’.
Operandi: Questi sono un argomento per gli operatori. Gli operandi possono essere una variabile, una chiamata di funzione o una costante.

Operatori: Questi specificano le azioni da eseguire sugli operatori. Esempio: ‘+’, ‘*’, Ecc

30
Q

Elenca diversi tipi di espressioni con l’esempio

A

Le espressioni possono essere come indicato di seguito:
Espressioni numeriche o aritmetiche: Esempio: 20 * 10+ 15

Espressioni booleane: Esempio: ‘Spot’ COME ‘sp% t’

Espressioni stringa: Esempio: LUNGHEZZA (‘NEW YORK’ || ‘NY’)

Espressioni di data: Esempio: SYSDATE> TO_DATE (’15 -NOV-16 ’,’ gg-mm-aa ‘)

31
Q

Scrivere un programma che mostri l’uso del ciclo WHILE per calcolare la media dei numeri inseriti dall’utente e l’immissione di più numeri viene interrotta inserendo il numero 0?

A

DECLARE n NUMBER; avg NUMBER :=0 ; sum NUMBER :=0 ; count NUMBER :=0 ; BEGIN n := &enter_a_number; WHILE(n0) LOOP count := count+1; sum := sum+n; n := &enter_a_number; END LOOP; avg := sum/count; DBMS_OUTPUT.PUT_LINE(‘the average is’||avg); END;

32
Q
  1. Cosa intendi per PL / SQL Records?
A

Un record PL / SQL può essere indicato come una raccolta di valori o, ad esempio, un gruppo di più parti di informazioni, ciascuna delle quali è di tipo più semplice e può essere correlata tra loro come campi.
Esistono tre tipi di record supportati in PL / SQL:
Record basati su tabelle
Record basati sul programmatore
Record basati su cursore

33
Q

Sequence

A

E’ un oggetto in Oracle utilizzato per generare una sequenza numerica. Ciò può essere utile quando è necessario creare un numero univoco che funga da chiave primaria