Top 65 întrebări pentru interviu PL / SQL & Răspunsuri

Anonim

Descărcați PDF

1) Ce este PL SQL?

PL SQL este un limbaj procedural care are SQL interactiv, precum și structuri de limbaj de programare procedurală, cum ar fi ramificarea condițională și iterația.

2) Diferențiați între% ROWTYPE și TYPE RECORD.

% ROWTYPE este utilizat atunci când o interogare returnează un rând întreg al unui tabel sau al unei vizualizări.

TYPE RECORD, pe de altă parte, este utilizat atunci când o interogare returnează coloana de diferite tabele sau vizualizări.

De exemplu. TIP r_emp este RECORD (sno smp.smpno% type, sname smp sname% type)

e_rec smp% ROWTYPE

Cursorul c1 este smpno select, dept din smp;

e_rec c1% ROWTYPE

3) Explicați utilizările cursorului.

Cursorul este o zonă privată numită în SQL din care pot fi accesate informații. Li se cere să proceseze fiecare rând individual pentru interogări care returnează mai multe rânduri.

4) Afișați codul unui cursor pentru buclă.

Cursorul declară% ROWTYPE ca indice de buclă implicit. Apoi deschide un cursor, obține rânduri de valori din setul activ din câmpurile înregistrării și se închide când toate înregistrările sunt procesate.

De exemplu. PENTRU smp_rec IN C1 LOOP

totalsal = totalsal + smp_recsal;

ENDLOOP;

5) Explicați utilizările declanșatorului bazei de date.

O unitate de program PL / SQL asociată cu o anumită tabelă de baze de date se numește declanșator de bază de date. Este folosit pentru:

1) Modificări ale datelor de audit.

2) Înregistrați evenimentele în mod transparent.

3) Aplicarea regulilor complexe de afaceri.

4) Mențineți tabelele de replici

5) Derivați valorile coloanei

6) Implementați autorizații complexe de securitate

6) Care sunt cele două tipuri de excepții.

Eroarea la manipularea unei părți din blocul PL / SQL se numește Excepție. Au două tipuri: user_defined și predefined.

7) Afișați câteva excepții predefinite.

DUP_VAL_ON_INDEX

ZERO_DIVIDE

NU S-AU GASIT DATE

TOO_MANY_ROWS

CURSOR_ALREADY_OPEN

NUMAR INVALID

INVALID_CURSOR

PROGRAM_ERROR

TIMEOUT _ON_RESOURCE

STORAGE_ERROR

LOGON_DENIED

VALUE_ERROR

etc.

8) Explicați Raise_application_error.

Este o procedură a pachetului DBMS_STANDARD care permite emiterea de mesaje de eroare definite de utilizator din declanșatorul bazei de date sau din subprogramul stocat.

9) Arată cum sunt apelate funcțiile și procedurile într-un bloc PL SQL.

Funcția este numită ca parte a unei expresii.

total: = calculate_sal ('b644')

Procedura este apelată ca o instrucțiune în PL / SQL.

calculate_bonus ('b644');

10) Explicați două tabele virtuale disponibile în momentul executării declanșatorului bazei de date.

Coloanele tabelului sunt denumite THEN.column_name și NOW.column_name.

Pentru declanșatoarele legate de INSERT, valorile NOW.column_name sunt disponibile numai.

Pentru declanșatoarele DELETE, valorile THEN.column_name sunt disponibile numai.

Pentru declanșatoarele legate de ACTUALIZARE, sunt disponibile ambele coloane Tabel.

11) Care sunt regulile care trebuie aplicate NULL-urilor în timp ce faceți comparații?

1) NULL nu este niciodată ADEVĂRAT sau FALS

2) NULL nu poate fi egal sau inegal cu alte valori

3) Dacă o valoare într-o expresie este NULL, atunci expresia însăși se evaluează la NULL, cu excepția operatorului de concatenare (||)

12) Cum este compilat un proces de PL SQL?

Procesul de compilare include verificarea sintaxei, legarea și procesele de generare a codului p.

Verificarea sintaxei verifică codurile PL SQL pentru erori de compilare. Când toate erorile sunt corectate, o adresă de stocare este atribuită variabilelor care conțin date. Se numește Binding. P-code este o listă de instrucțiuni pentru motorul PL SQL. Codul P este stocat în baza de date pentru blocuri denumite și este utilizat la următoarea executare.

13) Faceți diferența între erori de sintaxă și erori de rulare.

O eroare de sintaxă poate fi ușor detectată de un compilator PL / SQL. De exemplu, ortografia incorectă.

O eroare de runtime este tratată cu ajutorul secțiunii de gestionare a excepțiilor dintr-un bloc PL / SQL. De exemplu, instrucțiunea SELECT INTO, care nu returnează niciun rând.

14) Explicați Commit, Rollback și Savepoint.

Pentru o declarație COMMIT, este adevărat următoarele:

  • Alți utilizatori pot vedea modificările de date efectuate de tranzacție.
  • Blocările dobândite prin tranzacție sunt eliberate.
  • Munca efectuată prin tranzacție devine permanentă.

O declarație ROLLBACK este emisă la încheierea tranzacției și următoarele sunt adevărate.

  • Munca efectuată într-o tranziție este anulată, ca și cum nu ar fi fost emisă niciodată.
  • Toate blocările achiziționate prin tranzacție sunt eliberate.

Anulează toată munca depusă de utilizator într-o tranzacție. Cu SAVEPOINT, numai o parte a tranzacției poate fi anulată.

15) Definiți cursorii implicați și expliciți.

Un cursor este implicit implicit. Utilizatorul nu poate controla sau procesa informațiile din acest cursor.

Dacă o interogare returnează mai multe rânduri de date, programul definește un cursor explicit. Aceasta permite aplicației să proceseze fiecare rând secvențial pe măsură ce cursorul îl returnează.

16) Explicați eroarea tabelului mutant.

Apare atunci când un declanșator încearcă să actualizeze un rând pe care îl folosește în prezent. Este remediat utilizând vizualizări sau tabele temporare, astfel încât baza de date selectează una și actualizează cealaltă.

17) Când este necesară o declarație de declarare?

Instrucțiunea DECLARE este utilizată de blocurile anonime PL SQL, cum ar fi cu proceduri independente, ne-stocate. Dacă este utilizat, acesta trebuie să fie primul într-un fișier autonom.

18) Câți declanșatori pot fi aplicați unui tabel?

La un singur tabel se pot aplica maximum 12 declanșatoare.

19) Care este importanța SQLCODE și SQLERRM?

SQLCODE returnează valoarea numărului de erori pentru ultima eroare întâlnită, în timp ce SQLERRM returnează mesajul pentru ultima eroare.

20) Dacă un cursor este deschis, cum putem găsi într-un bloc SQL PL?

variabila de stare a cursorului% ISOPEN poate fi utilizată.

21) Afișați cele două excepții ale cursorului PL / SQL.

Cursor_Already_Open

Invaid_cursor

22) Ce operatori se ocupă de NULL?

NVL convertește NULL la o altă valoare specificată.

var: = NVL (var2, „Bună”);

IS NULL și IS NOT NULL pot fi utilizate pentru a verifica în mod specific dacă valoarea unei variabile este NULL sau nu.

23) SQL * Plus are și un motor PL / SQL?

Nu, SQL * Plus nu are încorporat un motor PL / SQL. Astfel, tot codul PL / SQL este trimis direct la motorul bazei de date. Este mult mai eficient, deoarece fiecare afirmație nu este eliminată individual.

24) Ce pachete sunt disponibile dezvoltatorilor PL SQL?

DBMS_ serie de pachete, cum ar fi, DBMS_PIPE, DBMS_DDL, DBMS_LOCK, DBMS_ALERT, DBMS_OUTPUT, DBMS_JOB, DBMS_UTILITY, DBMS_SQL, DBMS_TRANSACTION, UTL_FILE.

25) Explicați 3 părți de bază ale unui declanșator.

  • O declarație sau un eveniment declanșator.
  • O restricție
  • O actiune

26) Ce sunt funcțiile de caracter?

INITCAP, UPPER, SUBSTR, LOWER și LENGTH sunt toate funcții de caracter. Funcțiile de grup oferă rezultate pe baza grupurilor de rânduri, spre deosebire de rândurile individuale. Acestea sunt MAX, MIN, AVG, COUNT și SUM.

27) Explicați TTITLE și BTITLE.

Comenzi TTITLE și BTITLE care controlează anteturile și subsolurile raportului.

28) Afișați atributele cursorului PL / SQL.

% ISOPEN: Verifică dacă cursorul este deschis sau nu

% ROWCOUNT: numărul de rânduri care sunt actualizate, șterse sau preluate.

% GĂSIT: Verifică dacă cursorul a preluat vreun rând. Este adevărat dacă rândurile sunt preluate

% NOT GĂSIT: Verifică dacă cursorul a preluat vreun rând. Este adevărat dacă rândurile nu sunt preluate.

29) Ce este un intersect?

Intersect este produsul a două tabele și listează doar rândurile potrivite.

30) Ce sunt secvențele?

Secvențele sunt folosite pentru a genera numere de secvență fără o suprasolicitare a blocării. Dezavantajul său este că numărul secvenței se pierde dacă tranzacția este anulată.

31) Cum ați face referință la valorile coloanelor ÎNAINTE și DUPĂ ce ați inserat și șters declanșatoarele?

Folosind cuvântul cheie „new.column name”, declanșatoarele pot face referință la valorile coloanei prin colecție nouă. Utilizând cuvântul cheie „old.column name”, aceștia pot face referință la coloanele vechi după vechea colecție.

32) Care sunt utilizările cuvintelor cheie SYSDATE și USER?

SYSDATE se referă la data curentă a sistemului serverului. Este o pseudo coloană. USER este, de asemenea, o pseudo coloană, dar se referă la utilizatorul curent conectat la sesiune. Acestea sunt utilizate pentru a monitoriza modificările care apar în tabel.

33) Cum ajută ROWID să ruleze mai rapid o interogare?

ROWID este adresa logică a unui rând, nu este o coloană fizică. Se compune din numărul blocului de date, numărul fișierului și numărul rândului din blocul de date. Astfel, timpul de intrare / ieșire este redus la minimum recuperând rândul și are ca rezultat o interogare mai rapidă.

34) Pentru ce se utilizează legăturile bazei de date?

Link-urile bazei de date sunt create pentru a forma comunicarea între diferite baze de date sau medii diferite, cum ar fi testarea, dezvoltarea și producția. Link-urile bazei de date sunt doar în citire pentru a accesa și alte informații.

35) Ce face preluarea unui cursor?

Preluarea unui cursor citește Rezultatul Set rând cu rând.

36) Ce face închiderea unui cursor?

Închiderea unui cursor șterge zona SQL privată, precum și aloca memoria

37) Explicați utilizările fișierului de control.

Este un fișier binar. Înregistrează structura bazei de date. Include locații ale mai multor fișiere jurnal, nume și mărci de timp. Ele pot fi stocate în locații diferite pentru a ajuta la recuperarea informațiilor dacă un fișier este deteriorat.

38) Explicați coerența

Coerența arată că datele nu vor fi reflectate către ceilalți utilizatori până când datele nu sunt confirmate, astfel încât coerența să fie menținută.

39) Diferența între blocurile anonime și subprogramele.

Blocurile anonime sunt blocuri nenumite care nu sunt stocate nicăieri, în timp ce subprogramele sunt compilate și stocate în baza de date. Acestea sunt compilate la rulare.

40) Diferența între DECODARE și CASE.

Declarațiile DECODE și CASE sunt foarte asemănătoare, dar CASE este versiunea extinsă a DECODE. DECODE nu permite luarea de decizii în locul său.

selectați decodare (total = 12000, „înalt”, 10000, „mediu”) ca decode_tesr din smp unde smpno în (10,12,14,16);

Această declarație returnează o eroare.

CASE este utilizat direct în PL SQL, dar DECODE este utilizat doar în PL SQL prin SQL.

41) Explicați tranzacția autonomă.

O tranzacție autonomă este o tranzacție independentă a tranzacției principale sau principale. Nu este imbricat dacă este început de o altă tranzacție.

Există mai multe situații de utilizare a tranzacțiilor autonome, cum ar fi înregistrarea evenimentelor și auditul.

42) Diferențiați între SGA și PGA.

SGA înseamnă System Global Area, în timp ce PGA înseamnă Program sau Process Global Area. PGA primește doar 10% RAM, dar SGA primește 40% RAM.

43) Care este locația Pre_defined_functions.

Acestea sunt stocate în pachetul standard numit „Funcții, proceduri și pachete”

44) Explicați polimorfismul în PL SQL.

Polimorfismul este o caracteristică a OOP. Este capacitatea de a crea o variabilă, un obiect sau o funcție cu forme multiple. PL / SQL acceptă polimorfismul sub formă de supraîncărcare a unității de program într-o funcție sau pachet membru ... Logica neechivocă trebuie evitată în timp ce se face supraîncărcarea.

45) Care sunt utilizările MERGE?

MERGE este folosit pentru a combina mai multe instrucțiuni DML într-una singură.

Sintaxă: fuzionați în numele tablei

folosind (interogare)

pe (condiție de asociere)

atunci când nu se potrivește atunci

Comanda [inserare / actualizare / ștergere]

atunci când se potrivesc atunci

Comanda [inserare / actualizare / ștergere]

46) Pot fi executate simultan 2 interogări într-un sistem de baze de date distribuite?

Da, pot fi executate simultan. O interogare este întotdeauna independentă de a doua interogare într-un sistem de baze de date distribuite, bazat pe comiterea în 2 faze.

47) Explicați Raise_application_error.

Este o procedură a pachetului DBMS_STANDARD care permite emiterea de mesaje de eroare definite de utilizator din declanșatorul bazei de date sau din subprogramul stocat.

48) Ce parametru este utilizat pentru declarația de returnare, deși poate fi utilizat și în pl / sql?

Parametrii Out permit mai multe valori în programul de apelare. Parametrul Out nu este recomandat în funcții. Procedurile pot fi utilizate în locul funcțiilor dacă sunt necesare mai multe valori. Astfel, aceste proceduri sunt utilizate pentru a executa parametrii Out.

49) Cum ați converti data în format de dată iulian?

Putem folosi șirul formatului J:

SQL> selectați to_char (to_date ('29 -Mar-2013 ',' dd-luni-aaaa '),' J ') ca julian din dual;

IULIAN

50) Explicați SPOOL

Comanda spool poate imprima ieșirea instrucțiunilor sql într-un fișier.

spool / tmp / sql_outtxt

selectați smp_name, smp_id din smp unde dept = 'conturi';

bobina oprită;

51) Menționează în ce constă pachetul PL / SQL?

Un pachet PL / SQL este format din

  • Tabel PL / SQL și înregistrați instrucțiunile TYPE
  • Proceduri și funcții
  • Cursori
  • Variabile (tabele, scalare, înregistrări etc.) și constante
  • Numele excepțiilor și pragmele pentru relaționarea unui număr de eroare cu o excepție
  • Cursori

52) Menționează care sunt avantajele pachetelor PL / SQL?

Oferă mai multe avantaje precum

  • Ascunderea informațiilor forțate: oferă libertatea de a alege dacă să păstreze datele private sau publice
  • Design de sus în jos: puteți proiecta interfața cu codul ascuns în pachet înainte de a implementa modulele în sine
  • Persistența obiectelor : obiectele declarate într-o specificație de pachet se comportă ca o dată globală pentru toate obiectele PL / SQL din aplicație. Puteți modifica pachetul într-un modul și apoi să faceți referire la aceste modificări la un alt modul
  • Proiectare orientată obiect: pachetul oferă dezvoltatorilor o putere puternică asupra modului în care modulele și structurile de date din interiorul pachetului pot fi utilizate
  • Garantarea integrității tranzacției: oferă un nivel de integritate a tranzacției
  • Îmbunătățirea performanței: RDBMS urmărește automat validitatea tuturor obiectelor programului stocate în baza de date și îmbunătățește performanța pachetelor.

53) Menționați care sunt diferitele metode pentru a urmări codul PL / SQL?

Urmărirea codului este o tehnică crucială pentru a măsura performanța codului în timpul rulării. Diferite metode de urmărire includ

  • DBMS_APPLICATION_INFO
  • DBMS_TRACE
  • DBMS_SESSION și DBMS_MONITOR
  • utilități trcsess și tkproof

54) Menționează ce face profilerul ierarhic?

Profilerul ierarhic ar putea profila apelurile efectuate în PL / SQL, în afară de a umple golul dintre lacune și așteptările de urmărire a performanței. Eficiența profilerului ierarhic include

  • Raportare distinctă pentru consumul de timp SQL și PL / SQL
  • Numărul de rapoarte ale apelurilor de sub-programe distincte efectuate în PL / SQL și timpul petrecut cu fiecare apel de subprogram
  • Rapoarte multiple de analiză interactivă în format HTML utilizând utilitarul de linie de comandă
  • Mai eficient decât profilurile convenționale și alte utilități de urmărire

55) Menționează ce îți permite să faci PLV ​​msg?

Mesajul PLV vă permite să

  • Atribuiți mesaj text individual la rândul specificat în tabelul PL / SQL
  • Preluează textul mesajului după număr
  • Înlocuiește automat propriile dvs. mesaje cu mesajele de eroare Oracle standard cu comutare restricționată
  • Încărcați în lot numerele mesajelor și textul dintr-un tabel de baze de date direct PLV msg PL / SQL tabel

56) Menționează ce oferă pachetul PLV (PL / Vision)?

  • Valoare de substituție nulă
  • Set de rutine de afirmare
  • Utilități diverse
  • Set de constante utilizate pe tot parcursul viziunii PL
  • Tipuri de date predefinite
  • 57) Menționează la ce folosește PLVprs și PLVprsps?
  • PLVprs: Este o extensie pentru analiza șirurilor pentru PL / SQL și este cel mai scăzut nivel de funcționalitate de analiză a șirurilor
  • PLVprsps: Este cel mai înalt pachet pentru a analiza codul sursă PL / SQL în atomice separate. Pentru a face treaba, se bazează pe alte pachete de analiză.

58) Explicați cum puteți copia un fișier în conținutul fișierului și fișierul în tabelul PL / SQL în avans PL / SQL?

Cu un singur apel de program - „ procedura fcopy”, puteți copia conținutul complet al unui fișier într-un alt fișier. În timp ce copiați conținutul unui fișier direct într-un tabel PL / SQL, puteți utiliza programul „ file2pstab” .

59) Explicați cum se efectuează în avans gestionarea excepțiilor PL / SQL?

Pentru gestionarea excepțiilor, PL / SQl oferă un plugin eficient PLVexc. PLVexc acceptă patru acțiuni diferite de tratare a excepțiilor.

  • Continuați procesarea
  • Înregistrați și apoi continuați
  • Oprirea procesării
  • Înregistrați și apoi opriți procesarea

Pentru acele excepții care reapar, puteți utiliza instrucțiunea RAISE.

60) Menționează ce problemă s-ar putea confrunta în timp ce scrii informațiile de jurnal într-un tabel de baze de date din PL / SQL?

În timp ce scrieți informații despre jurnal într-un tabel de baze de date, problema cu care vă confruntați este că informațiile sunt disponibile numai după ce noile rânduri sunt angajate în baza de date. Aceasta ar putea fi o problemă, deoarece un astfel de PLVlog este de obicei implementat pentru a urmări erorile și, în multe astfel de cazuri, tranzacția curentă ar eșua sau ar avea nevoie în alt mod de o revenire.

61) Menționează care este funcția care este utilizată pentru a transfera un jurnal de tabel PL / SQL într-un tabel de baze de date?

Pentru a transfera un jurnal de tabel PL / SQL se utilizează o funcție de tabel de jurnal de bază de date „PROCEDURĂ ps2db” .

62) Când trebuie să utilizați un punct de salvare implicit pentru „salvare” a PLVlog?

Punctul de salvare implicit „rollback to” al PLVlog este utilizat atunci când utilizatorii au activat activitatea de rollback și nu au furnizat un punct de salvare alternativ în apelul către put_line. Punctul de salvare implicit este inițializat la constanta c none.

63) De ce PLVtab este considerat cel mai simplu mod de a accesa tabelul PL / SQL?

Tabelul PL / SQL este cel mai apropiat de tablouri din PL / SQL și, pentru a accesa acest tabel, trebuie să declarați mai întâi un tip de tabel și apoi să declarați însuși tabelul PL / SQL. Dar utilizând PLVtab, puteți evita definirea propriului tip de tabel PL / SQL și puteți facilita accesul la tabelul de date PL / SQL.

64) Menționați ce vă permite PLVtab să faceți atunci când afișați conținutul tabelelor PL / SQL?

PLVtab vă permite să faceți următoarele lucruri atunci când afișați conținutul tabelelor PL / SQL

  • Afișați sau suprimați un antet pentru masă
  • Afișați sau suprimați numerele de rând pentru valorile tabelului
  • Afișați un prefix înainte de fiecare rând al tabelului

65) Explicați cum puteți salva sau plasa mesajul într-un tabel?

Pentru a salva mesajul într-un tabel, îl puteți face în două moduri

  • Încărcați mesaje individuale cu apeluri în procedura add_text
  • Încărcați seturi de mesaje dintr-un tabel de baze de date cu procedura load_from_dbms

66) Menționează la ce folosește funcția „procedura procedurii” în PL / SQL?

„Procedura modulului” permite conversia tuturor liniilor de cod dintr-o unitate de program definită cu un singur apel de procedură. Există trei argumente pentru module

  • module_in
  • cor_in
  • Last_module_in

67) Menționează ce face PLVcmt și PLVrb în PL / SQL?

PL / Vision oferă două pachete care vă ajută să gestionați procesarea tranzacțiilor în aplicația PL / SQL. Este PLVcmt și PLVrb.

  • PLVcmt: pachetul PLVcmt împachetează logica și complexitatea pentru a face față procesării de comitere
  • PLVrb: oferă o interfață programatică pentru derularea activității în PL / SQL