Top 65 PL / SQL Interview Spørgsmål & Svar

Anonim

Download PDF

1) Hvad er PL SQL?

PL SQL er et proceduremæssigt sprog, der har interaktiv SQL, samt proceduremæssige programmeringssprogkonstruktioner som betinget forgrening og iteration.

2) Skel mellem% ROWTYPE og TYPE RECORD.

% ROWTYPE bruges, når en forespørgsel returnerer en hel række i en tabel eller visning.

TYPE RECORD bruges derimod, når en forespørgsel returnerer kolonne med forskellige tabeller eller visninger.

For eksempel. TYPE r_emp er RECORD (sno smp.smpno% type, sname smp sname% type)

e_rec smp% ROWTYPE

Markør c1 er vælg smpno, dept fra smp;

e_rec c1% ROWTYPE

3) Forklar anvendelsen af ​​markøren.

Markør er et navngivet privat område i SQL, hvorfra oplysninger kan tilgås. De skal behandle hver række individuelt for forespørgsler, der returnerer flere rækker.

4) Vis kode for en markør for loop.

Markør erklærer% ROWTYPE implicit som loop-indeks. Det åbner derefter en markør, får rækker af værdier fra det aktive sæt i postens felter og lukker, når alle poster behandles.

For eksempel. FOR smp_rec I C1 LOOP

total = total + smp_recsal;

ENDLOOP;

5) Forklar anvendelsen af ​​databasetrigger.

En PL / SQL-programenhed tilknyttet en bestemt databasetabel kaldes en databasetrigger. Det bruges til:

1) Revision af dataændringer.

2) Log hændelser gennemsigtigt.

3) Håndhæve komplekse forretningsregler.

4) Vedligehold replikatabeller

5) Udled kolonneværdier

6) Implementere komplekse sikkerhedstilladelser

6) Hvad er de to typer undtagelser?

Fejlhåndtering af en del af PL / SQL-blok kaldes undtagelse. De har to typer: brugerdefineret og foruddefineret.

7) Vis nogle foruddefinerede undtagelser.

DUP_VAL_ON_INDEX

ZERO_DIVIDE

INGEN DATA FUNDET

TOO_MANY_ROWS

CURSOR_ALREADY_OPEN

INVALID_NUMBER

INVALID_CURSOR

PROGRAM_ERROR

TIMEOUT _ON_RESOURCE

STORAGE_ERROR

LOGON_DENIED

VALUE_ERROR

etc.

8) Forklar Raise_application_error.

Det er en procedure med pakke DBMS_STANDARD, der tillader udstedelse af brugerdefinerede fejlmeddelelser fra databasetrigger eller lagret underprogram.

9) Vis hvordan funktioner og procedurer kaldes i en PL SQL-blok.

Funktion kaldes som en del af et udtryk.

i alt: = calc_sal ('b644')

Procedure kaldes som en erklæring i PL / SQL.

beregne_bonus ('b644');

10) Forklar to tilgængelige virtuelle tabeller på tidspunktet for udførelse af databasetrigger.

Tabelkolonner kaldes THEN.column_name og NOW.column_name.

For INSERT-relaterede udløsere er værdierne NOW.column_name kun tilgængelige.

For SLET relaterede udløsere er THEN.column_name-værdier kun tilgængelige.

For UPDATE-relaterede udløsere er begge tabelkolonner tilgængelige.

11) Hvad er de regler, der skal anvendes på NULL'er, når man foretager sammenligninger?

1) NULL er aldrig SAND eller FALSK

2) NULL kan ikke være lig med eller lig med andre værdier

3) Hvis en værdi i et udtryk er NULL, evalueres selve udtrykket til NULL bortset fra sammenkædningsoperator (||)

12) Hvordan kompileres en proces med PL SQL?

Kompileringsprocessen inkluderer syntakscheck, bind og generering af p-kode processer.

Syntaks kontrol kontrollerer PL SQL-koder for kompileringsfejl. Når alle fejl er rettet, tildeles en lageradresse de variabler, der indeholder data. Det kaldes bindende. P-kode er en liste over instruktioner til PL SQL-motoren. P-kode gemmes i databasen til navngivne blokke og bruges næste gang den udføres.

13) Skel mellem syntaks og runtime-fejl.

En syntaksfejl kan let detekteres af en PL / SQL-kompilator. For eksempel forkert stavning.

En runtime-fejl håndteres ved hjælp af afsnittet om undtagelseshåndtering i en PL / SQL-blok. For eksempel SELECT INTO-sætning, som ikke returnerer nogen rækker.

14) Forklar Commit, Rollback og Savepoint.

For en COMMIT-erklæring gælder følgende:

  • Andre brugere kan se dataændringerne foretaget af transaktionen.
  • Låse erhvervet ved transaktionen frigøres.
  • Arbejdet udført af transaktionen bliver permanent.

En ROLLBACK-erklæring udstedes, når transaktionen slutter, og følgende er sandt.

  • Arbejdet i en overgang fortrydes, som om det aldrig blev udstedt.
  • Alle låse erhvervet ved transaktion frigives.

Det fortryder alt det arbejde, brugeren har udført i en transaktion. Med SAVEPOINT kan kun en del af transaktionen fortrydes.

15) Definer implicitte og eksplicitte markører.

En markør er implicit som standard. Brugeren kan ikke kontrollere eller behandle oplysningerne i denne markør.

Hvis en forespørgsel returnerer flere rækker med data, definerer programmet en eksplicit markør. Dette gør det muligt for applikationen at behandle hver række sekventielt, når markøren returnerer den.

16) Forklar mutationstabelfejl.

Det sker, når en trigger forsøger at opdatere en række, som den i øjeblikket bruger. Det løses ved hjælp af visninger eller midlertidige tabeller, så databasen vælger den ene og opdaterer den anden.

17) Hvornår kræves en erklæring?

DECLARE-sætning bruges af PL SQL anonyme blokke, f.eks. Med enkeltstående, ikke-lagrede procedurer. Hvis den bruges, skal den komme først i en enkeltstående fil.

18) Hvor mange udløsere kan anvendes på en tabel?

Der kan maksimalt anvendes 12 udløsere til en tabel.

19) Hvad er vigtigheden af ​​SQLCODE og SQLERRM?

SQLCODE returnerer værdien af ​​antallet af fejl for den sidst stødte fejl, mens SQLERRM returnerer meddelelsen for den sidste fejl.

20) Hvis en markør er åben, hvordan finder vi det i en PL SQL-blok?

% ISOPEN-markørstatusvariablen kan bruges.

21) Vis de to PL / SQL-markørundtagelser.

Cursor_Already_Open

Invaid_ markør

22) Hvilke operatører beskæftiger sig med NULL?

NVL konverterer NULL til en anden specificeret værdi.

var: = NVL (var2, 'Hej');

IS NULL og IS NOT NULL kan bruges til specifikt at kontrollere, om værdien af ​​en variabel er NULL eller ej.

23) Har SQL * Plus også en PL / SQL Engine?

Nej, SQL * Plus har ikke en PL / SQL Engine indlejret i den. Således sendes al PL / SQL-kode direkte til databasemotoren. Det er meget mere effektivt, da hver erklæring ikke fjernes individuelt.

24) Hvilke pakker er tilgængelige for PL SQL-udviklere?

DBMS_-serie af pakker, såsom DBMS_PIPE, DBMS_DDL, DBMS_LOCK, DBMS_ALERT, DBMS_OUTPUT, DBMS_JOB, DBMS_UTILITY, DBMS_SQL, DBMS_TRANSACTION, UTL_FILE.

25) Forklar 3 grundlæggende dele af en trigger.

  • En udløsende erklæring eller begivenhed.
  • En begrænsning
  • En handling

26) Hvad er karakterfunktioner?

INITCAP, OPPER, SUBSTR, LOWER og LENGDE er alle tegnfunktioner. Gruppefunktioner giver resultater baseret på grupper af rækker i modsætning til individuelle rækker. De er MAX, MIN, AVG, COUNT og SUM.

27) Forklar TTITLE og BTITLE.

TTITLE og BTITLE kommandoer, der styrer rapporthoveder og sidefødder.

28) Vis markørattributterne for PL / SQL.

% ISOPEN: Kontrollerer, om markøren er åben eller ej

% ROWCOUNT: Antallet af rækker, der opdateres, slettes eller hentes.

% FOUND: Kontrollerer, om markøren har hentet en række. Det er sandt, hvis rækker hentes

% IKKE FUNDET: Kontrollerer, om markøren har hentet en række. Det er sandt, hvis rækker ikke hentes.

29) Hvad er et kryds?

Intersect er et produkt af to tabeller, og det viser kun matchende rækker.

30) Hvad er sekvenser?

Sekvenser bruges til at generere sekvensnumre uden låsning. Dens ulempe er, at sekvensnummeret går tabt, hvis transaktionen rulles tilbage.

31) Hvordan refererer du til kolonneværdier FØR og EFTER at du har indsat og slettet udløsere?

Ved hjælp af nøgleordet "new.column name" kan udløserne henvise til kolonneværdier efter ny samling. Ved at bruge nøgleordet "old.column name" kan de henvise til kolonne vaues efter gammel samling.

32) Hvad bruger SYSDATE og USER nøgleord?

SYSDATE refererer til den aktuelle serversystemdato. Det er en pseudokolonne. BRUGER er også en pseudokolonne, men refererer til den aktuelle bruger, der er logget på sessionen. De bruges til at overvåge ændringer, der sker i tabellen.

33) Hvordan hjælper ROWID med at køre en forespørgsel hurtigere?

ROWID er den logiske adresse på en række, den er ikke en fysisk kolonne. Den består af databloknummer, filnummer og række nummer i datablokken. Således bliver I / O-tiden minimeret ved at hente rækken og resulterer i en hurtigere forespørgsel.

34) Hvad bruges databaselinks til?

Databaselinks oprettes for at danne kommunikation mellem forskellige databaser eller forskellige miljøer som test, udvikling og produktion. Databaselinkene er skrivebeskyttet for også at få adgang til andre oplysninger.

35) Hvad betyder det at hente en markør?

At hente en markør læser Resultatsæt række for række.

36) Hvad betyder lukning af en markør?

Lukning af en markør rydder det private SQL-område såvel som omfordeling af hukommelse

37) Forklar anvendelsen af ​​kontrolfil.

Det er en binær fil. Den registrerer databasens struktur. Det inkluderer placeringer af flere logfiler, navne og tidsstempler. De kan gemmes forskellige steder for at hjælpe med at hente oplysninger, hvis en fil bliver beskadiget.

38) Forklar konsekvens

Konsistens viser, at data ikke reflekteres til andre brugere, før dataene er begået, så konsistensen opretholdes.

39) Forskel mellem anonyme blokke og underprogrammer.

Anonyme blokke er unavngivne blokke, der ikke lagres hvor som helst, mens underprogrammer kompileres og lagres i databasen. De udarbejdes ved kørselstid.

40) Forskel mellem DECODE og CASE.

DECODE og CASE udsagn er meget ens, men CASE er udvidet version af DECODE. DECODE tillader ikke beslutningsafgørelser i stedet for.

vælg afkode (total = 12000, 'høj', 10000, 'medium') som afkode_tesr fra smp hvor smpno i (10,12,14,16);

Denne erklæring returnerer en fejl.

CASE bruges direkte i PL SQL, men DECODE bruges kun i PL SQL gennem SQL.

41) Forklar autonome transaktioner.

En autonom transaktion er en uafhængig transaktion af hoved- eller modertransaktionen. Det er ikke indlejret, hvis det startes af en anden transaktion.

Der er flere situationer for at bruge autonome transaktioner som hændelseslogning og revision.

42) Skel mellem SGA og PGA.

SGA står for System Global Area, mens PGA står for Program eller Process Global Area. PGA tildeles kun 10% RAM-størrelse, men SGA får 40% RAM-størrelse.

43) Hvad er placeringen af ​​præ_definerede_funktioner.

De opbevares i standardpakken kaldet "Funktioner, procedurer og pakker"

44) Forklar polymorfisme i PL SQL.

Polymorfisme er et træk ved OOP. Det er evnen til at oprette en variabel, et objekt eller en funktion med flere former. PL / SQL understøtter polymorfisme i form af overbelastning af programenheder inde i en medlemsfunktion eller pakke ... Entydig logik skal undgås, mens overbelastning udføres.

45) Hvad bruger MERGE?

MERGE bruges til at kombinere flere DML-udsagn til en.

Syntaks: flet ind i tabellenavn

bruger (forespørgsel)

på (tilslutningsbetingelse)

når den ikke matches, da

[indsæt / opdater / slet] kommando

når matchet derefter

[indsæt / opdater / slet] kommando

46) Kan 2 forespørgsler udføres samtidigt i et distribueret databasesystem?

Ja, de kan udføres samtidigt. Én forespørgsel er altid uafhængig af den anden forespørgsel i et distribueret databasesystem baseret på 2-faset forpligte.

47) Forklar Raise_application_error.

Det er en procedure i pakken DBMS_STANDARD, der tillader udstedelse af en brugerdefineret fejlmeddelelse fra databasetriggeren eller det lagrede underprogram.

48) Hvad er out-parameteren, der bruges til, selvom return statement også kan bruges i pl / sql?

Out-parametre tillader mere end en værdi i opkaldsprogrammet. Out-parameter anbefales ikke i funktioner. Procedurer kan bruges i stedet for funktioner, hvis der kræves flere værdier. Disse procedurer bruges således til at udføre Out-parametre.

49) Hvordan ville du konvertere dato til juliansk datoformat?

Vi kan bruge J-formatstrengen:

SQL> vælg to_char (to_date ('29 -Mar-2013 ',' dd-mon-yyyy '),' J ') som julian fra dual;

JULIAN

50) Forklar SPOOL

Spool-kommando kan udskrive output af sql-udsagn i en fil.

spool / tmp / sql_outtxt

vælg smp_name, smp_id fra smp hvor dept = 'konti';

spole af;

51) Nævn, hvad PL / SQL-pakke består af?

En PL / SQL-pakke består af

  • PL / SQL-tabel og registrer TYPE-udsagn
  • Procedurer og funktioner
  • Markører
  • Variabler (tabeller, skalarer, poster osv.) Og konstanter
  • Undtagelsesnavne og pragmas for at relatere et fejlnummer med en undtagelse
  • Markører

52) Nævn, hvad er fordelene ved PL / SQL-pakker?

Det giver flere fordele som

  • Håndhævet informations skjulning: Det giver frihed til at vælge, om data skal holdes private eller offentlige
  • Top-down design: Du kan designe grænsefladen til koden, der er skjult i pakken, før du faktisk implementerede modulerne selv
  • Objektets vedholdenhed: Objekter, der er erklæret i en pakke-specifikation, opfører sig som en global data for alle PL / SQL-objekter i applikationen. Du kan ændre pakken i et modul og derefter henvise disse ændringer til et andet modul
  • Objektorienteret design: Pakken giver udviklere stærkt greb om, hvordan modulerne og datastrukturer inde i pakken kan bruges
  • Garanti for transaktionsintegritet: Det giver et niveau af transaktionsintegritet
  • Ydelsesforbedring: RDBMS sporer automatisk gyldigheden af ​​alle programobjekter, der er gemt i databasen, og forbedrer ydeevnen for pakker.

53) Nævn, hvad er forskellige metoder til at spore PL / SQL-koden?

Sporingskode er en vigtig teknik til at måle kodeydelsen under løbetiden. Forskellige metoder til sporing inkluderer

  • DBMS_APPLICATION_INFO
  • DBMS_TRACE
  • DBMS_SESSION og DBMS_MONITOR
  • trcsess og tkproof forsyningsselskaber

54) Nævn hvad gør den hierarkiske profil?

Den hierarkiske profil kunne profilere opkald foretaget i PL / SQL bortset fra at udfylde hullet mellem smuthullerne og forventningerne til sporing af ydeevne. Effektiviteten af ​​den hierarkiske profil inkluderer

  • Tydelig rapportering for SQL og PL / SQL tidsforbrug
  • Rapporter tæller forskellige distanceprogrammer, der er foretaget i PL / SQL, og den tid, der bruges med hvert underprogramopkald
  • Flere interaktive analyserapporter i HTML-format ved hjælp af kommandolinjeprogrammet
  • Mere effektiv end konventionelle profiler og andre sporingsværktøjer

55) Nævn, hvad giver PLV msg dig mulighed for at gøre?

PLV-meddelelsen giver dig mulighed for at

  • Tildel individuel tekstbesked til specificeret række i PL / SQL-tabellen
  • Den henter meddelelsesteksten efter nummer
  • Det erstatter automatisk dine egne meddelelser med standard Oracle-fejlmeddelelser med begrænset skift
  • Batchindlæsningsmeddelelsesnumre og tekst fra en databasetabel direkte PLV msg PL / SQL-tabel

56) Nævn, hvad tilbyder PLV (PL / Vision) -pakken?

  • Null substitutionsværdi
  • Sæt med påstandsrutiner
  • Diverse forsyningsselskaber
  • Sæt med konstanter, der bruges i hele PL-visionen
  • Foruddefinerede datatyper
  • 57) Nævn, hvad er brugen af ​​PLVprs og PLVprsps?
  • PLVprs: Det er en udvidelse til string parsing for PL / SQL, og det er det laveste niveau af string parsing funktionalitet
  • PLVprsps: Det er pakken på højeste niveau at parsere PL / SQL-kildekode i separat atomik. Det er afhængig af andre parsingpakker for at få arbejdet udført.

58) Forklar, hvordan du kan kopiere en fil til filindhold og fil til PL / SQL-tabel på forhånd PL / SQL?

Med et enkelt programopkald - " fcopy procedure", kan du kopiere det komplette indhold af en fil til en anden fil. Mens du kopierer indholdet af en fil direkte til en PL / SQL-tabel, kan du bruge programmet " file2pstab" .

59) Forklar, hvordan undtagelseshåndtering sker på forhånd PL / SQL?

For undtagelse håndtering giver PL / SQl et effektivt plugin PLVexc. PLVexc understøtter fire forskellige handlinger til undtagelseshåndtering.

  • Fortsæt behandlingen
  • Optag og fortsæt derefter
  • Stop behandling
  • Registrer og stop derefter behandlingen

For de undtagelser, der genopstår, kan du bruge RAISE-sætningen.

60) Nævn hvilket problem man kan stå over for, når man skriver logoplysninger til en databasetabel i PL / SQL?

Mens du skriver logoplysninger til en databasetabel, er problemet, at oplysningerne kun er tilgængelige, når de nye rækker er forpligtet til databasen. Dette kan være et problem, da PLVlog normalt bruges til at spore fejl, og i mange sådanne tilfælde vil den aktuelle transaktion mislykkes eller på anden måde har brug for en tilbageførsel.

61) Nævn, hvad er den funktion, der bruges til at overføre en PL / SQL-tabellog til en databasetabel?

For at overføre en PL / SQL- tabellog anvendes en databaselogtabelfunktion "PROCEDURE ps2db" .

62) Når du skal bruge en standard "tilbagevenden til" gemelsespunkt for PLVlog?

Standard "tilbagevenden til" gemelsespunkt for PLVlog bruges, når brugerne har aktiveret tilbagevendende aktivitet og ikke har givet et alternativt gemmepunkt i opkaldet til put_line. Standard gemelsespunkt initialiseres til c ingen konstant.

63) Hvorfor betragtes PLVtab som den nemmeste måde at få adgang til PL / SQL-tabellen på?

PL / SQL-tabellen er tættest på arrays i PL / SQL, og for at få adgang til denne tabel skal du først erklære en tabeltype, og derefter skal du erklære PL / SQL-tabellen selv. Men ved at bruge PLVtab kan du undgå at definere din egen PL / SQL-tabeltype og gøre PL / SQL-datatabelladgang let.

64) Nævn, hvad gør PLVtab dig i stand til, når du viser indholdet af PL / SQL-tabeller?

PLVtab giver dig mulighed for at udføre følgende ting, når du viser indholdet af PL / SQL-tabeller

  • Vis eller undertryk et overskrift til bordet
  • Vis eller undertryk rækkenumrene for tabelværdierne
  • Vis et præfiks foran hver række i tabellen

65) Forklar, hvordan kan du gemme eller placere din msg i en tabel?

For at gemme msg i en tabel kan du gøre det på to måder

  • Indlæs individuelle meddelelser med opkald til proceduren add_text
  • Indlæs sæt af meddelelser fra en databasetabel med proceduren load_from_dbms

66) Nævn, hvad er brugen af ​​funktionen "modulprocedure" i PL / SQL?

"Modulproceduren" gør det muligt at konvertere alle kodelinjer i en bestemt programenhed med et procedureopkald. Der er tre argumenter for moduler

  • modul_in
  • cor_in
  • Last_module_in

67) Nævn hvad PLVcmt og PLVrb gør i PL / SQL?

PL / Vision tilbyder to pakker, der hjælper dig med at håndtere transaktionsbehandling i PL / SQL-applikation. Det er PLVcmt og PLVrb.

  • PLVcmt: PLVcmt-pakke omslutter logik og kompleksitet til at håndtere commit-behandling
  • PLVrb: Det giver en programmatisk grænseflade til tilbagevendende aktivitet i PL / SQL