Top 65 PL / SQL-sollicitatievragen & Antwoorden

Anonim

Download PDF

1) Wat is PL SQL?

PL SQL is een procedurele taal met interactieve SQL, evenals constructies van procedurele programmeertalen zoals voorwaardelijke vertakking en iteratie.

2) Maak onderscheid tussen% ROWTYPE en TYPE RECORD.

% ROWTYPE wordt gebruikt wanneer een query een hele rij van een tabel of weergave retourneert.

TYPE RECORD wordt daarentegen gebruikt wanneer een query een kolom met verschillende tabellen of weergaven retourneert.

Bijv. TYPE r_emp is RECORD (sno smp.smpno% type, sname smp sname% type)

e_rec smp% ROWTYPE

Cursor c1 is selecteer smpno, diepte van smp;

e_rec c1% ROWTYPE

3) Leg het gebruik van de cursor uit.

Cursor is een benoemd privégebied in SQL van waaruit informatie kan worden geopend. Ze moeten elke rij afzonderlijk verwerken voor query's die meerdere rijen retourneren.

4) Toon code van een cursor voor lus.

Cursor declareert% ROWTYPE impliciet als lusindex. Het opent vervolgens een cursor, haalt rijen met waarden op uit de actieve set in velden van het record en wordt gesloten wanneer alle records zijn verwerkt.

Bijv. VOOR smp_rec IN C1-LUS

totalsal = totalsal + smp_recsal;

ENDLOOP;

5) Leg het gebruik van de databasetrigger uit.

Een PL / SQL-programma-eenheid die aan een bepaalde databasetabel is gekoppeld, wordt een databasetrigger genoemd. Je gebruikt het voor :

1) Wijzigingen van auditgegevens.

2) Log gebeurtenissen transparant.

3) Dwing complexe bedrijfsregels af.

4) Onderhoud replicatabellen

5) Leid kolomwaarden af

6) Implementeer complexe beveiligingsautorisaties

6) Wat zijn de twee soorten uitzonderingen.

Fout bij het afhandelen van een deel van het PL / SQL-blok wordt Uitzondering genoemd. Ze hebben twee typen: user_defined en voorgedefinieerd.

7) Toon enkele voorgedefinieerde uitzonderingen.

DUP_VAL_ON_INDEX

ZERO_DIVIDE

GEEN DATA GEVONDEN

TOO_MANY_ROWS

CURSOR_ALREADY_OPEN

ONGELDIG NUMMER

INVALID_CURSOR

PROGRAM_FOUT

TIMEOUT _ON_RESOURCE

STORAGE_ERROR

AANMELDING GEWEIGERD

VALUE_ERROR

enz.

8) Leg Raise_application_error uit.

Het is een procedure van pakket DBMS_STANDARD waarmee door de gebruiker gedefinieerde foutmeldingen kunnen worden afgegeven vanuit de databasetrigger of het opgeslagen subprogramma.

9) Laat zien hoe functies en procedures worden aangeroepen in een PL SQL-blok.

Functie wordt aangeroepen als onderdeel van een uitdrukking.

total: = bereken_sal ('b644')

Procedure wordt aangeroepen als een instructie in PL / SQL.

bereken_bonus ('b644');

10) Verklaar twee virtuele tabellen die beschikbaar zijn op het moment dat de databasetrigger wordt uitgevoerd.

Tabelkolommen worden THEN.column_name en NOW.column_name genoemd.

Voor INSERT-gerelateerde triggers zijn alleen NOW.column_name-waarden beschikbaar.

Voor DELETE-gerelateerde triggers zijn alleen THEN.column_name-waarden beschikbaar.

Voor UPDATE-gerelateerde triggers zijn beide tabelkolommen beschikbaar.

11) Wat zijn de regels die moeten worden toegepast op NULL's bij het maken van vergelijkingen?

1) NULL is nooit WAAR of ONWAAR

2) NULL kan niet gelijk of ongelijk zijn aan andere waarden

3) Als een waarde in een uitdrukking NULL is, wordt de uitdrukking zelf geëvalueerd als NULL, met uitzondering van de samenvoegingsoperator (||)

12) Hoe wordt een proces van PL SQL gecompileerd?

Het compilatieproces omvat processen voor syntaxiscontrole, binding en het genereren van p-code.

Bij syntaxiscontrole worden de PL SQL-codes gecontroleerd op compilatiefouten. Wanneer alle fouten zijn gecorrigeerd, wordt een opslagadres toegewezen aan de variabelen die gegevens bevatten. Het heet bindend. P-code is een lijst met instructies voor de PL SQL-engine. P-code wordt voor benoemde blokken in de database opgeslagen en wordt de volgende keer dat deze wordt uitgevoerd, gebruikt.

13) Maak onderscheid tussen syntaxis- en runtimefouten.

Een syntaxisfout kan gemakkelijk worden gedetecteerd door een PL / SQL-compiler. Voor bijvoorbeeld onjuiste spelling.

Een runtime-fout wordt afgehandeld met behulp van een uitzonderingsafhandelingssectie in een PL / SQL-blok. Bijvoorbeeld: SELECT INTO-instructie, die geen rijen retourneert.

14) Leg Commit, Rollback en Savepoint uit.

Voor een COMMIT-statement geldt het volgende:

  • Andere gebruikers kunnen de gegevenswijzigingen zien die door de transactie zijn aangebracht.
  • De vergrendelingen die door de transactie zijn verkregen, worden vrijgegeven.
  • Het werk dat door de transactie wordt gedaan, wordt permanent.

Een ROLLBACK-instructie wordt uitgegeven wanneer de transactie eindigt, en het volgende is waar.

  • Het werk dat in een transitie wordt gedaan, wordt ongedaan gemaakt alsof het nooit is uitgegeven.
  • Alle vergrendelingen die door een transactie zijn verkregen, worden vrijgegeven.

Het maakt al het werk dat de gebruiker in een transactie heeft gedaan, ongedaan. Met SAVEPOINT kan slechts een deel van de transactie ongedaan worden gemaakt.

15) Definieer impliciete en expliciete cursors.

Een cursor is standaard impliciet. De gebruiker kan de informatie in deze cursor niet controleren of verwerken.

Als een query meerdere rijen gegevens retourneert, definieert het programma een expliciete cursor. Hierdoor kan de toepassing elke rij opeenvolgend verwerken terwijl de cursor deze terugbrengt.

16) Verklaar de muterende tabelfout.

Het treedt op wanneer een trigger probeert een rij bij te werken die deze momenteel gebruikt. Het wordt opgelost door weergaven of tijdelijke tabellen te gebruiken, dus de database selecteert de ene en werkt de andere bij.

17) Wanneer is een aangifteverklaring vereist?

DECLARE-instructie wordt gebruikt door anonieme PL SQL-blokken, zoals bij zelfstandige, niet-opgeslagen procedures. Als het wordt gebruikt, moet het op de eerste plaats komen in een stand-alone bestand.

18) Hoeveel triggers kunnen op een tafel worden toegepast?

Er kunnen maximaal 12 triggers op één tafel worden toegepast.

19) Wat is het belang van SQLCODE en SQLERRM?

SQLCODE retourneert de waarde van het aantal fouten voor de laatst opgetreden fout, terwijl SQLERRM het bericht voor de laatste fout retourneert.

20) Als een cursor open is, hoe kunnen we deze dan vinden in een PL SQL-blok?

de% ISOPEN cursorstatusvariabele kan worden gebruikt.

21) Toon de twee PL / SQL-cursoruitzonderingen.

Cursor_Already_Open

Invaid_cursor

22) Welke operators hebben te maken met NULL?

NVL converteert NULL naar een andere opgegeven waarde.

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

IS NULL en IS NOT NULL kunnen worden gebruikt om specifiek te controleren of de waarde van een variabele NULL is of niet.

23) Heeft SQL * Plus ook een PL / SQL Engine?

Nee, SQL * Plus heeft geen ingebouwde PL / SQL-engine. Alle PL / SQL-code wordt dus rechtstreeks naar de database-engine gestuurd. Het is veel efficiënter omdat elke verklaring niet afzonderlijk wordt verwijderd.

24) Welke pakketten zijn beschikbaar voor PL SQL-ontwikkelaars?

DBMS_ reeks pakketten, zoals DBMS_PIPE, DBMS_DDL, DBMS_LOCK, DBMS_ALERT, DBMS_OUTPUT, DBMS_JOB, DBMS_UTILITY, DBMS_SQL, DBMS_TRANSACTION, UTL_FILE.

25) Leg drie basisonderdelen van een trigger uit.

  • Een triggerende verklaring of gebeurtenis.
  • Een beperking
  • Een actie

26) Wat zijn karakterfuncties?

INITCAP, UPPER, SUBSTR, LOWER en LENGTH zijn allemaal karakterfuncties. Groepsfuncties geven resultaten op basis van groepen rijen, in tegenstelling tot individuele rijen. Dit zijn MAX, MIN, AVG, COUNT en SUM.

27) Leg TTITLE en BTITLE uit.

TTITLE- en BTITLE-opdrachten die kop- en voetteksten van rapporten beheren.

28) Toon de cursorattributen van PL / SQL.

% ISOPEN: controleert of de cursor open is of niet

% ROWCOUNT: het aantal rijen dat is bijgewerkt, verwijderd of opgehaald.

% GEVONDEN: controleert of de cursor een rij heeft opgehaald. Het is waar als rijen worden opgehaald

% NIET GEVONDEN: controleert of de cursor een rij heeft opgehaald. Het is waar als rijen niet worden opgehaald.

29) Wat is een intersect?

Intersect is het product van twee tabellen en bevat alleen overeenkomende rijen.

30) Wat zijn reeksen?

Sequenties worden gebruikt om volgnummers te genereren zonder een overhead van vergrendeling. Het nadeel is dat het volgnummer verloren gaat als de transactie wordt teruggedraaid.

31) Hoe zou u verwijzen naar kolomwaarden VOOR en NADAT u triggers heeft ingevoegd en verwijderd?

Met behulp van het trefwoord "new.column name" kunnen de triggers verwijzen naar kolomwaarden door middel van een nieuwe verzameling. Door het trefwoord "old.column name" te gebruiken, kunnen ze verwijzen naar kolomwaarden op basis van oude collectie.

32) Wat zijn de toepassingen van de trefwoorden SYSDATE en USER?

SYSDATE verwijst naar de huidige systeemdatum van de server. Het is een pseudo-kolom. USER is ook een pseudo-kolom, maar verwijst naar de huidige gebruiker die bij de sessie is aangemeld. Ze worden gebruikt om veranderingen in de tabel te volgen.

33) Hoe helpt ROWID om een ​​zoekopdracht sneller uit te voeren?

ROWID is het logische adres van een rij, het is geen fysieke kolom. Het bestaat uit databloknummer, bestandsnummer en rijnummer in het datablok. De I / O-tijd wordt dus geminimaliseerd bij het ophalen van de rij, wat resulteert in een snellere query.

34) Waar worden databaselinks voor gebruikt?

Databasekoppelingen worden gemaakt om communicatie tot stand te brengen tussen verschillende databases of verschillende omgevingen zoals test, ontwikkeling en productie. De databasekoppelingen zijn alleen-lezen om ook toegang te krijgen tot andere informatie.

35) Wat doet het ophalen van een cursor?

Als u een cursor ophaalt, wordt Resultaat Set rij voor rij weergegeven.

36) Wat doet het sluiten van een cursor?

Als u een cursor sluit, wordt het privé SQL-gebied gewist en wordt geheugen vrijgemaakt

37) Leg het gebruik van controlebestand uit.

Het is een binair bestand. Het legt de structuur van de database vast. Het bevat locaties van verschillende logbestanden, namen en tijdstempels. Ze kunnen op verschillende locaties worden opgeslagen om te helpen bij het ophalen van informatie als een bestand beschadigd raakt.

38) Leg consistentie uit

Consistentie laat zien dat gegevens niet worden weergegeven aan andere gebruikers totdat de gegevens zijn vastgelegd, zodat de consistentie wordt gehandhaafd.

39) Verschil tussen anonieme blokken en subprogramma's.

Anonieme blokken zijn blokken zonder naam die nergens worden opgeslagen terwijl subprogramma's worden gecompileerd en opgeslagen in een database. Ze worden tijdens runtime samengesteld.

40) Verschil tussen DECODE en CASE.

DECODE- en CASE-instructies lijken erg op elkaar, maar CASE is een uitgebreide versie van DECODE. DECODE staat geen uitspraken over besluitvorming toe.

selecteer decode (totaal = 12000, 'high', 10000, 'medium') als decode_tesr van smp waar smpno in (10,12,14,16);

Deze instructie retourneert een fout.

CASE wordt direct gebruikt in PL SQL, maar DECODE wordt alleen gebruikt in PL SQL via SQL.

41) Leg autonome transactie uit.

Een autonome transactie is een onafhankelijke transactie van de hoofd- of bovenliggende transactie. Het is niet genest als het wordt gestart door een andere transactie.

Er zijn verschillende situaties om autonome transacties te gebruiken, zoals gebeurtenisregistratie en auditing.

42) Maak onderscheid tussen SGA en PGA.

SGA staat voor System Global Area, terwijl PGA staat voor Program or Process Global Area. PGA krijgt slechts 10% RAM-grootte toegewezen, maar SGA krijgt 40% RAM-grootte.

43) Wat is de locatie van Pre_defined_functions.

Ze worden opgeslagen in het standaardpakket genaamd "Functies, procedures en pakketten"

44) Leg polymorfisme uit in PL SQL.

Polymorfisme is een kenmerk van OOP. Het is de mogelijkheid om een ​​variabele, een object of functie te creëren met meerdere vormen. PL / SQL ondersteunt polymorfisme in de vorm van overbelasting van programma-eenheden binnen een lidfunctie of pakket… Ondubbelzinnige logica moet worden vermeden terwijl overbelasting plaatsvindt.

45) Wat zijn de toepassingen van MERGE?

MERGE wordt gebruikt om meerdere DML-instructies tot één te combineren.

Syntaxis: samenvoegen in tabelnaam

met behulp van (vraag)

op (samenvoegvoorwaarde)

wanneer niet geëvenaard dan

[invoegen / bijwerken / verwijderen] commando

wanneer gematcht dan

[invoegen / bijwerken / verwijderen] commando

46) Kunnen 2 query's tegelijkertijd worden uitgevoerd in een gedistribueerd databasesysteem?

Ja, ze kunnen tegelijkertijd worden uitgevoerd. Een query is altijd onafhankelijk van de tweede query in een gedistribueerd databasesysteem op basis van de 2-fasencommissie.

47) Leg Raise_application_error uit.

Het is een procedure van het pakket DBMS_STANDARD waarmee door de gebruiker gedefinieerde foutmeldingen kunnen worden afgegeven vanuit de databasetrigger of het opgeslagen subprogramma.

48) Wat is de parameter out die wordt gebruikt, ook al kan de return-instructie ook in pl / sql worden gebruikt?

Out-parameters staan ​​meer dan één waarde toe in het aanroepende programma. Out-parameter wordt niet aanbevolen in functies. Procedures kunnen worden gebruikt in plaats van functies als meerdere waarden vereist zijn. Deze procedures worden dus gebruikt om Out-parameters uit te voeren.

49) Hoe zou je de datum omzetten in Juliaanse datumnotatie?

We kunnen de J-formaatstring gebruiken:

SQL> selecteer to_char (to_date ('29 -Mar-2013 ',' dd-mon-yyyy '),' J ') als julian van dual;

JULIAN

50) Leg SPOOL uit

Spool-opdracht kan de uitvoer van SQL-instructies in een bestand afdrukken.

spool / tmp / sql_outtxt

selecteer smp_name, smp_id van smp waar afdeling = 'accounts';

afrollen;

51) Geef aan uit welk PL / SQL-pakket bestaat?

Een PL / SQL-pakket bestaat uit

  • PL / SQL-tabel en record TYPE-instructies
  • Procedures en functies
  • Cursors
  • Variabelen (tabellen, scalairen, records, etc.) en constanten
  • Uitzonderingsnamen en pragma's voor het relateren van een foutnummer met een uitzondering
  • Cursors

52) Wat zijn de voordelen van PL / SQL-pakketten?

Het biedt verschillende voordelen, zoals

  • Gedwongen informatie verbergen: het biedt de vrijheid om te kiezen of gegevens privé of openbaar moeten worden gehouden
  • Top-down ontwerp: u kunt de interface ontwerpen voor de code die in het pakket is verborgen voordat u de modules zelf implementeert
  • Objectpersistentie: objecten die in een pakketspecificatie zijn gedeclareerd, gedragen zich als globale gegevens voor alle PL / SQL-objecten in de toepassing. U kunt het pakket in de ene module wijzigen en vervolgens naar die wijzigingen verwijzen naar een andere module
  • Objectgeoriënteerd ontwerp: het pakket geeft ontwikkelaars sterke controle over hoe de modules en datastructuren in het pakket kunnen worden gebruikt
  • Transactie-integriteit garanderen: het biedt een niveau van transactie-integriteit
  • Prestatieverbetering: het RDBMS volgt automatisch de geldigheid van alle programma-objecten die in de database zijn opgeslagen en verbetert de prestaties van pakketten.

53) Noem wat verschillende methoden om de PL / SQL-code te traceren?

Het traceren van code is een cruciale techniek om de codeprestaties tijdens de runtime te meten. Verschillende methoden voor tracering omvatten

  • DBMS_APPLICATION_INFO
  • DBMS_TRACE
  • DBMS_SESSION en DBMS_MONITOR
  • trcsess en tkproof hulpprogramma's

54) Noem wat doet de hiërarchische profiler?

De hiërarchische profiler zou de oproepen in PL / SQL kunnen profileren, afgezien van het opvullen van de kloof tussen de mazen in de wet en de verwachtingen van prestatietracering. De efficiëntie van de hiërarchische profiler omvat

  • Afzonderlijke rapportage voor SQL- en PL / SQL-tijdverbruik
  • Rapporteert het aantal verschillende subprogramma-oproepen die in de PL / SQL zijn gedaan, en de tijd die is besteed aan elke subprogramma-oproep
  • Meerdere interactieve analyserapporten in HTML-indeling met behulp van het opdrachtregelhulpprogramma
  • Effectiever dan conventionele profiler en andere traceringsprogramma's

55) Wat kunt u met PLV-bericht doen?

Met het PLV-bericht kunt u

  • Wijs een afzonderlijk tekstbericht toe aan de opgegeven rij in de PL / SQL-tabel
  • Het haalt de berichttekst op nummer op
  • Het vervangt automatisch uw eigen berichten voor standaard Oracle-foutmeldingen met een restrictieknop
  • Batch laad berichtnummers en tekst uit een databasetabel rechtstreeks PLV msg PL / SQL-tabel

56) Wat zijn de aanbiedingen van het PLV (PL / Vision) -pakket?

  • Null-vervangingswaarde
  • Set van beweringsroutines
  • Diverse hulpprogramma's
  • Set constanten die in PL-visie worden gebruikt
  • Vooraf gedefinieerde datatypes
  • 57) Wat is het nut van PLVprs en PLVprsps?
  • PLVprs: het is een extensie voor string-parsing voor PL / SQL, en het is het laagste niveau van string-parsing-functionaliteit
  • PLVprsps: het is het pakket van het hoogste niveau om PL / SQL-broncode in afzonderlijke atomica te parseren. Het is afhankelijk van andere ontledingspakketten om het werk gedaan te krijgen.

58) Leg uit hoe u van tevoren een bestand naar de inhoud van een bestand en een bestand naar de PL / SQL-tabel kunt kopiëren PL / SQL?

Met een enkele programma-aanroep - " fcopy procedure", kunt u de volledige inhoud van een bestand naar een ander bestand kopiëren. Om de inhoud van een bestand rechtstreeks naar een PL / SQL-tabel te kopiëren, kunt u het programma " file2pstab" gebruiken .

59) Leg uit hoe de afhandeling van uitzonderingen vooraf wordt gedaan PL / SQL?

Voor het afhandelen van uitzonderingen biedt PL / SQl een effectieve plug-in PLVexc. PLVexc ondersteunt vier verschillende afhandelingsacties voor uitzonderingen.

  • Ga door met de verwerking
  • Neem op en ga dan verder
  • Stop de verwerking
  • Neem op en stop de verwerking

Voor die uitzonderingen die zich opnieuw voordoen, kunt u de RAISE-instructie gebruiken.

60) Geef aan met welk probleem iemand kan worden geconfronteerd bij het schrijven van logboekinformatie naar een databasetabel in PL / SQL?

Bij het schrijven van logboekinformatie naar een databasetabel, is het probleem dat u tegenkomt dat de informatie alleen beschikbaar is als de nieuwe rijen aan de database zijn toegewezen. Dit kan een probleem zijn, aangezien zo'n PLVlog meestal wordt gebruikt om fouten op te sporen en in veel van dergelijke gevallen zou de huidige transactie mislukken of anderszins een rollback nodig hebben.

61) Wat is de functie die wordt gebruikt om een ​​PL / SQL-tabellog naar een databasetabel over te brengen?

Om een ​​PL / SQL- tabellogboek over te dragen, wordt een databaselogtabelfunctie "PROCEDURE ps2db" gebruikt.

62) Wanneer moet u een standaard "terugdraaien naar" opslagpunt van PLVlog gebruiken?

Het standaard "terugdraaien naar" opslagpunt van PLVlog wordt gebruikt wanneer de gebruikers de terugdraaiactiviteit hebben ingeschakeld en geen alternatief opslagpunt hebben opgegeven in de aanroep naar put_line. Het standaard opslagpunt wordt geïnitialiseerd naar de constante c none.

63) Waarom wordt PLVtab beschouwd als de gemakkelijkste manier om toegang te krijgen tot de PL / SQL-tabel?

De PL / SQL-tabel komt het dichtst bij arrays in PL / SQL, en om toegang te krijgen tot deze tabel moet u eerst een tabeltype declareren, en daarna moet u de PL / SQL-tabel zelf declareren. Maar door PLVtab te gebruiken, kunt u voorkomen dat u uw eigen PL / SQL-tabeltype definieert en de toegang tot PL / SQL-gegevenstabellen eenvoudig maken.

64) Geef aan wat u met PLVtab kunt doen als u de inhoud van PL / SQL-tabellen laat zien?

Met PLVtab kunt u de volgende dingen doen wanneer u de inhoud van PL / SQL-tabellen laat zien

  • Toon of onderdruk een koptekst voor de tabel
  • Toon of onderdruk de rijnummers voor de tabelwaarden
  • Laat een voorvoegsel zien voor elke rij van de tabel

65) Leg uit hoe u uw bericht in een tabel kunt opslaan of plaatsen?

Om een ​​bericht in een tabel op te slaan, kunt u dit op twee manieren doen

  • Laad individuele berichten met oproepen naar de add_text- procedure
  • Laad sets berichten uit een databasetabel met de load_from_dbms- procedure

66) Wat is het gebruik van de functie "module procedure" in PL / SQL?

De "moduleprocedure" maakt het mogelijk om alle regels code om te zetten in een welomlijnde programma-eenheid met één procedure-aanroep. Er zijn drie argumenten voor modules

  • module_in
  • cor_in
  • Last_module_in

67) Noem wat PLVcmt en PLVrb doen in PL / SQL?

PL / Vision biedt twee pakketten die u helpen bij het beheren van transactieverwerking in PL / SQL-applicaties. Het is PLVcmt en PLVrb.

  • PLVcmt: PLVcmt-pakket omvat logica en complexiteit voor het omgaan met commit-verwerking
  • PLVrb: Het biedt een programma-interface om activiteit in PL / SQL terug te draaien