30 most important pl sql interview questions
Cele mai importante întrebări despre interviu PL / SQL cu exemple pentru a vă ajuta să vă pregătiți pentru următorul interviu:
Ce este PL / SQL?
PL / SQL (Procedural Language / SQL) este practic o extensie procedurală a Oracle - SQL. PL / SQL ajută utilizatorul să dezvolte aplicații complexe de baze de date folosind structuri de control, proceduri, funcții, module etc.
Acest articol va discuta cele mai importante întrebări și răspunsuri la interviu PL / SQL.
Întrebări și răspunsuri pentru interviuri PL / SQL
Să începem!!
Q # 1) Diferențiați PL / SQL și SQL?
Răspuns: Diferența dintre SQL și PL / SQL poate fi clasificată după cum urmează:
SQL | PL / SQL |
---|---|
SQL este un limbaj natural care este foarte util pentru procesarea interactivă. | PL / SQL este o extensie procedurală a Oracle - SQL. |
SQL nu oferă capabilități procedurale, cum ar fi testarea stării, buclarea este oferită. | PL / SQL acceptă capabilități procedurale, precum și caracteristici de limbaj ridicat, cum ar fi instrucțiunile condiționale, instrucțiunile în buclă etc. |
Toate instrucțiunile SQL sunt executate de serverul bazei de date unul câte unul, deci este un proces care necesită mult timp. | Instrucțiunile PL / SQL trimit întregul bloc de instrucțiuni către serverul de baze de date în același timp, astfel traficul de rețea este redus considerabil. |
Nu există proceduri de tratare a erorilor în SQL. | PL / SQL acceptă gestionarea erorilor personalizate. |
Q # 2) Înscrieți caracteristicile PL / SQL?
Răspuns:
Caracteristicile PL / SQL sunt următoarele:
- PL / SQL permite accesul și partajarea acelorași subprograme de către mai multe aplicații.
- Este cunoscut pentru portabilitatea codului, deoarece codul poate fi executat pe orice sistem de operare, cu condiția ca Oracle să fie încărcat pe acesta.
- Cu PL / SQL, utilizatorii își pot scrie propriile rutine personalizate de tratare a erorilor.
- Performanță îmbunătățită a tranzacțiilor cu integrarea în dicționarul de date Oracle.
Q # 3) Care sunt tipurile de date disponibile în PL / SQL?
Răspuns: Tipurile de date definesc modalitățile de identificare a tipului de date și a operațiunilor asociate acestora.
Există 4 tipuri de tipuri de date predefinite explicate după cum urmează:
- Tipuri de date scalare: Un tip de date scalare este un tip de date atomice care nu are componente interne.
- De exemplu
- CHAR (intervalul valorii caracterelor cu lungime fixă între 1 și 32.767 caractere)
- VARCHAR2 (intervalul valorii caracterelor cu lungime variabilă între 1 și 32.767 caractere)
- NUMĂR (valori zecimale fixe, zecimale flotante sau întregi)
- BOOLEAN (tip de date logice pentru valori TRUE FALSE sau NULL)
- DATE (stochează informații despre dată și oră)
- LONG (date de caractere de lungime variabilă)
- Tipuri de date compozite: Un tip de date compuse este alcătuit din alte tipuri de date și componente interne care pot fi ușor utilizate și manipulate. De exemplu, ÎNREGISTRARE, TABEL și VARIE.
- Tipuri de date de referință: Un tip de date de referință conține valori, numite pointeri care desemnează alte elemente de program sau elemente de date. De exemplu, CURSOR REF.
- Tipuri de date cu obiecte mari: Un tip de date obiect mare conține valori, numite localizatoare, care definește locația obiectelor mari (cum ar fi clipuri video, imagini grafice etc.) stocate în afara liniei.
- De exemplu
- BFILE (fișier binar)
- BLOB (obiect mare binar)
- CLOB (obiect de caractere mare)
- NCLOB (obiect mare de tip NCHAR)
Lectură recomandată = >> Tipuri de date PL SQL
Q # 4) Explicați scopul tipurilor de date% TYPE și% ROWTYPE cu exemplul?
Răspuns: PL / SQL utilizează atributul de declarație% TYPE pentru ancorare. Acest atribut oferă tipul de date al unei variabile, constante sau coloane. Atributul% TYPE este util la declararea unei variabile care are același tip de date ca o coloană de tabel.
De exemplu, variabila m_empno are același tip și dimensiune de date ca și coloana empno în tabel emp.
m_empno emp.empno%TYPE;
Atributul% ROWTYPE este utilizat pentru a declara o variabilă ca fiind o înregistrare având aceeași structură ca un rând dintr-un tabel. Rândul este definit ca o înregistrare și câmpurile sale au aceleași nume și tipuri de date ca și coloanele din tabel sau vizualizare.
De exemplu:
dept_rec dept%ROWTYPE;
Aceasta declară o înregistrare care poate stoca un rând întreg pentru tabela DEPT.
Q # 5) Ce înțelegeți prin pachetele PL / SQL?
Răspuns: Pachetele PL / SQL sunt obiecte schemă care grupează funcții, proceduri stocate, cursoare și variabile la un loc.
Pachetele au 2 piese obligatorii:
- Specificații pachet
- Corpul pachetului
Q # 6) Ce înțelegeți de cursorii PL / SQL?
Răspuns: PL / SQL necesită o capacitate specială de recuperare și procesare a mai multor rânduri, iar resursa respectivă este cunoscută sub numele de Cursori. Un cursor este un pointer către zona contextuală, care este o zonă a memoriei care conține instrucțiuni SQL și informații pentru procesarea instrucțiunilor.
Cursorul PL / SQL este practic un mecanism sub care sunt selectate mai multe rânduri ale datelor din baza de date și apoi fiecare rând este procesat individual în cadrul unui program.
Q # 7) Explicați tipurile de cursor.
site-uri de testare a produselor care trimit lucruri
Răspuns: Există două tipuri de cursoare.
Acestea sunt explicate după cum urmează:
a) Cursori expliciți: Pentru interogările care returnează mai multe rânduri, un cursor explicit este declarat și denumit de un programator. Pentru a utiliza cursorul explicit în PL / SQL, sunt urmați 4 pași
- Declarați cursorul
Sintaxă: CURSOR este
Declarație SELECT;
Aici este numele atribuit cursorului și instrucțiunea SELECT este interogarea care returnează rândurile la setul activ al cursorului.
- Deschideți cursorul
Sintaxă: DESCHIS ;
Unde este numele cursorului definit anterior.
- Aduceți rânduri de pe cursor
Sintaxă: FETCH INTO;
Aici, se referă la numele cursorului definit anterior din care sunt preluate rândurile.
reprezintă lista variabilelor care vor primi datele preluate.
- Închiderea cursorului
Sintaxă: ÎNCHIDE ;
Aici, numele cursorului este închis.
b) Cursoare implicite: Când se execută orice instrucțiune SQL, PL / SQL creează automat un cursor fără a defini astfel de cursori sunt cunoscuți ca cursori implicați.
Pentru următoarele afirmații, PL / SQL folosește cursoare implicite
- INTRODUCE
- ACTUALIZAȚI
- ȘTERGE
- SELECT (interogări care returnează exact un rând)
Q # 8) Când folosim declanșatoarele?
Răspuns: Cuvântul „Trigger” înseamnă a activa. În PL / SQL, declanșatorul este o procedură stocată care definește o acțiune întreprinsă de baza de date atunci când se efectuează evenimentul legat de baza de date.
Declanșatoarele sunt necesare în principal în următoarele scopuri:
- Pentru a menține constrângeri complexe de integritate
- Auditarea informațiilor din tabel prin înregistrarea modificărilor
- Semnalarea altor acțiuni ale programului atunci când se fac modificări la tabel
- Aplicarea regulilor complexe de afaceri
- Prevenirea tranzacțiilor nevalide
Q # 9) Explicați diferența în execuția declanșatorilor și a procedurilor stocate?
Răspuns: O procedură stocată este executată în mod explicit prin emiterea unei instrucțiuni de apel procedură dintr-un alt bloc printr-un apel procedură cu argumente.
Declanșatorul este executat implicit ori de câte ori se întâmplă orice eveniment declanșator, cum ar fi apariția instrucțiunilor DML.
Q # 10) Explicați diferența dintre declanșatoare și constrângeri?
Răspuns: Declanșatoarele sunt diferite de constrângeri în următoarele moduri:
Declanșatoare | Constrângeri |
---|---|
Afectați rândurile adăugate numai după activarea declanșatorului. | Afectează toate rândurile din tabel, inclusiv cele care există deja atunci când constrângerea este activată. |
Declanșatoarele sunt utilizate pentru a implementa reguli de afaceri complexe care nu pot fi implementate folosind constrângeri de integritate. | Constrângerile mențin integritatea bazei de date. |
Q # 11) Ce este un bloc PL / SQL?
Răspuns: În PL / SQL, instrucțiunile sunt grupate în unități numite Blocks. Blocurile PL / SQL pot include constante, variabile, instrucțiuni SQL, bucle, instrucțiuni condiționale, gestionarea excepțiilor. Blocurile pot crea, de asemenea, o procedură, o funcție sau un pachet.
In linii mari, Blocurile PL / SQL sunt două tipuri:
(i) Blocuri anonime: Blocurile PL / SQL fără antet sunt cunoscute ca blocuri anonime. Aceste blocuri nu formează corpul unei proceduri, funcții sau declanșatoare.
Exemplu:
DECLARE num NUMBER(2); sq NUMBER(3); BEGIN num:= &Number1; sq := num*num; DBMS_OUTPUT.PUT_LINE(‘Square:’ ||sq); END;
(ii) Blocuri denumite: Blocurile PL / SQL cu antet sau etichete sunt cunoscute sub numele de Blocuri denumite. Blocurile denumite pot fi fie subprograme (proceduri, funcții, pachete), fie declanșatoare.
Lectură recomandată = >> Proceduri și funcții PL SQL
Exemplu:
FUNCTION sqr (num IN NUMBER) RETURN NUMBER is sq NUMBER(2); BEGIN sq:= num*num; RETURN sq; END;
Q # 12) Diferențierea între erori de sintaxă și de runtime?
Răspuns:
Erori de sintaxă sunt cele care pot fi ușor identificate de un compilator PL / SQL. Aceste erori pot fi o greșeală de ortografie etc.
Erori în timpul rulării sunt acele erori din blocul PL / SQL pentru care trebuie inclusă o secțiune de tratare a excepțiilor pentru tratarea erorilor. Aceste erori pot fi instrucțiunea SELECT INTO care nu returnează niciun rând.
Q # 13) Ce sunt COMMIT, ROLLBACK și SAVEPOINT?
Răspuns: COMMIT, SAVEPOINT și ROLLBACK sunt trei specificații de tranzacție disponibile în PL / SQL.
Declarație COMMIT: Când se efectuează operația DML, aceasta manipulează doar datele din bufferul bazei de date și baza de date rămâne neafectată de aceste modificări. Pentru a salva / stoca aceste modificări ale tranzacției în baza de date, trebuie să comitem tranzacția. Tranzacția COMMIT salvează toate modificările restante de la ultimul COMMIT și se întâmplă următorul proces
- Blocările rândurilor afectate sunt eliberate
- Tranzacția marcată ca finalizată
- Detaliile tranzacției sunt stocate în dicționarul de date.
Sintaxă: COMITIA;
Declarație ROLLBACK: Atunci când dorim să anulăm sau să ștergem toate modificările care au avut loc în tranzacția curentă până acum, trebuie să revenim la tranzacție. Cu alte cuvinte, ROLLBACK șterge toate modificările restante de la ultimul COMMIT sau ROLLBACK.
Sintaxa pentru a reveni complet la o tranzacție:
ROLLBACK;
Declarație SAVEPOINT: Declarația SAVEPOINT dă un nume și marchează un punct în procesarea tranzacției curente. Modificările și blocările care au avut loc înainte de SAVEPOINT în tranzacție sunt păstrate, în timp ce cele care apar după SAVEPOINT sunt eliberate.
Sintaxă:
SAVEPOINT;
Q # 14) Ce este tabelul de mutare și tabelul de constrângere?
Răspuns: Un tabel care este în prezent modificat de o instrucțiune DML precum definirea declanșatoarelor într-un tabel este cunoscut sub numele de Masă mutantă .
Un tabel din care ar putea fi nevoie să citiți pentru o constrângere referențială de integritate este cunoscut sub numele de masa de constrângere .
Q # 15) Care sunt parametrii reali și parametrii formali?
Răspuns: Variabilele sau o expresie denumită parametri care apar în instrucțiunea de apel de procedură este cunoscută sub numele de Parametrii reali .
De exemplu: raise_sal (emp_num, merit + sumă);
testarea acceptării utilizatorului (uat)
Aici, în exemplul de mai sus, emp_num și suma sunt cei doi parametri reali.
Variabilele care sunt declarate în antetul procedurii și la care se face referire în corpul procedurii sunt numite ca Parametri formali .
De exemplu:
PROCEDURA raise_sal (emp_id INTEGER) ESTE
curr_sal REAL:
……… ..
ÎNCEPE
SELECTEAZĂ sal INTO cur_sal FROM emp WHERE empno = emp_id;
……
END raise_sal;
Aici, în exemplul de mai sus, emp_id acționează ca un parametru formal.
Q # 16) Care este diferența dintre instrucțiunile ROLLBACK și ROLLBACK TO?
Răspuns: Tranzacția se încheie complet după declarația ROLLBACK, adică comanda ROLLBACK anulează complet o tranzacție și eliberează toate blocările.
Pe de altă parte, o tranzacție este încă activă și rulează după comanda ROLLBACK TO deoarece anulează doar o parte a tranzacției până la SAVEPOINT-ul dat.
Q # 17) Scrieți un script PL / SQL pentru a afișa următoarea serie de numere: 99,96,93 …… 9,6,3?
Răspuns
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; /
Q # 18) Care sunt cele 3 moduri de parametru?
Răspuns: 3 moduri ale parametrului sunt IN, OUT, IN OUT.
Acestea pot fi explicate după cum urmează:
- Parametrii IN: Parametrii IN vă permit să transmiteți valorile procedurii apelate și pot fi inițializate la valorile implicite. Parametrii IN acționează ca o constantă și nu i se poate atribui nicio valoare.
- Parametrii OUT: Parametrii OUT returnează valoarea apelantului și trebuie specificați. Parametrii OUT acționează ca o variabilă neinițializată și nu pot fi folosiți într-o expresie.
- Parametrii IN OUT: Parametrii IN OUT transmit valorile inițiale unei proceduri și returnează valorile actualizate apelantului. Parametrii IN OUT acționează ca o variabilă inițializată și ar trebui să i se atribuie o valoare.
Î # 19) De ce este% ISOPEN întotdeauna fals pentru un cursor implicit?
Răspuns: Un cursor implicit, atributul SQL% ISOPEN este întotdeauna fals deoarece cursorul implicit este deschis pentru o instrucțiune DML și este închis imediat după executarea instrucțiunii DML.
Q # 20) Când se execută o instrucțiune DML, în care cursor se atribuie, rezultatul instrucțiunii este salvat?
Răspuns: Rezultatul declarației este salvat în 4 atribute ale cursorului.
Acestea sunt:
- SQL% GĂSIT
- SQL% NOTFOUND
- SQL% ROWCOUNT
- SQL% ISOPEN
Q # 21) Care sunt modalitățile de a comenta într-un cod PL / SQL?
Răspuns: Comentariile sunt textul care este inclus în cod pentru a îmbunătăți lizibilitatea și pentru înțelegerea cititorului. Aceste coduri nu sunt niciodată executate.
Există două moduri de a comenta în PL / SQL:
1) Comentariu cu o singură linie: Acest comentariu începe cu dublu -.
Exemplu:
DECLARA
num NUMBER (2); - este o variabilă locală.
ÎNCEPE
2) Comentariu pe mai multe linii: Acest comentariu începe cu / * și se termină cu * /.
Exemplu:
ÎNCEPE
num: = & p_num; / * Aceasta este o variabilă gazdă utilizată în corpul programului * /
………
SFÂRȘIT
Q # 22) Ce înțelegeți prin gestionarea excepțiilor în PL / SQL?
Răspuns: Când apare o eroare în PL / SQL, excepția este ridicată. Cu alte cuvinte, pentru a gestiona situațiile nedorite în care scripturile PL / SQL s-au încheiat în mod neașteptat, în program este inclus un cod de tratare a erorilor. În PL / SQL, toate codurile de gestionare a excepțiilor sunt plasate într-o secțiune EXCEPTION.
Există 3 tipuri de EXCEPȚIE:
- Excepții predefinite: Erori frecvente cu nume predefinite.
- Excepții nedefinite: Erori mai puțin frecvente, fără nume predefinite.
- Excepții definite de utilizator: Nu provocați erori în timpul rulării, ci încălcați regulile comerciale.
Q # 23) Înscrieți câteva excepții predefinite?
Răspuns:
Unele dintre excepțiile predefinite sunt:
- NU S-AU GASIT DATE: Instrucțiune SELECT cu un singur rând în care nu se returnează date.
- TOO_MANY_ROWS: Instrucțiune SELECT cu un singur rând în care sunt returnate mai multe rânduri.
- INVALID_CURSOR: A apărut o operație ilegală a cursorului.
- ZERO_DIVIDE: A încercat să se împartă la zero.
Q # 24) Care sunt excepțiile cursorului PL / SQL?
Răspuns:
cel mai bun software pentru mașini virtuale pentru Windows
Excepțiile legate de cursorii PL / SQL sunt:
- CURSOR_ALREADY_OPEN
- INVALID_CURSOR
Q # 25) Explicați diferența dintre cursorul declarat în proceduri și cursorul declarat în specificația pachetului?
Răspuns: Cursorul declarat în procedură este tratat ca local și, prin urmare, nu poate fi accesat prin alte proceduri.
Cursorul declarat în specificația pachetului este tratat ca global și astfel poate fi accesat prin alte proceduri.
Q # 26) Ce sunt în loc de declanșatoare?
Răspuns: Declanșatoarele INSTEAD OF sunt declanșatoarele scrise special pentru modificarea vizualizărilor, care nu pot fi modificate direct prin instrucțiuni SQL DML.
Q # 27) Ce sunt expresiile?
Răspuns: Expresiile sunt reprezentate de o succesiune de literali și variabile care sunt separate de operatori. În PL / SQL, operațiile sunt utilizate pentru a manipula, compara și calcula unele date. O expresie este o compoziție de „Operatori” și „Operanzi”.
- Operanzi: Acestea sunt un argument pentru operatori. Operanzii pot fi o variabilă, apel de funcție sau constantă.
- Operatori: Acestea specifică acțiunile care trebuie efectuate operatorilor. Exemplu: „+”, „*”, Etc.
Q # 28) Enumerați diferite tipuri de expresii cu exemplul.
Răspuns: Expresiile pot fi cele menționate mai jos:
- Expresii numerice sau aritmetice: Exemplu: 20 * 10+ 15
- Expresii booleene: Exemplu: „Spot” LIKE „sp% t”
- Expresii șir: Exemplu: LUNGIME („NEW YORK” || „NY”)
- Expresii de dată: Exemplu: SYSDATE> TO_DATE ('15 -NOV-16 ', „dd-mm-yy”)
Q # 29) Scrieți un program care arată utilizarea buclei WHILE pentru a calcula media numerelor introduse de utilizator și introducerea mai multor numere sunt oprite prin introducerea numărului 0?
Răspuns
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;
Î. 30) Ce înțelegeți prin înregistrările PL / SQL?
Răspuns: O înregistrare PL / SQL poate fi denumită o colecție de valori sau, de exemplu, un grup de informații multiple, fiecare dintre acestea fiind de tipuri mai simple și pot fi legate între ele ca câmpuri.
Există trei tipuri de înregistrări acceptate în PL / SQL:
- Înregistrări bazate pe tabel
- Înregistrări bazate pe programatori
- Înregistrări bazate pe cursor
Concluzie
PL / SQL este foarte vast când vine vorba de învățare și aplicare. Sper că aceste întrebări și răspunsuri la interviu vă vor ajuta să treceți.
Pentru a afla mai multe despre PL SQL, citiți cuprinzătorul nostru Seria de tutoriale PL / SQL .
Învățare fericită !!
Lectură recomandată
- Întrebări și răspunsuri la interviu
- Întrebări și răspunsuri la interviuri de testare ETL
- Top 30+ Întrebări și răspunsuri populare la interviu cu Castravete
- Top 30 întrebări și răspunsuri la interviu SAS
- Top Oracle Interview Questions: Oracle Basic, SQL, PL / SQL Questions
- Top 30 Întrebări și răspunsuri ale interviului pentru testarea securității
- 30+ Întrebări și răspunsuri de top pentru interviurile Scrum (LISTA 2021)
- Top 30 de întrebări și răspunsuri la interviu pentru SGBD