30 most important pl sql interview questions
Die wichtigsten Fragen zu PL / SQL-Interviews mit Beispielen zur Vorbereitung auf das bevorstehende Interview:
Was ist PL / SQL?
PL / SQL (Procedural Language / SQL) ist im Grunde eine prozedurale Erweiterung von Oracle - SQL. PL / SQL hilft dem Benutzer bei der Entwicklung komplexer Datenbankanwendungen mithilfe von Kontrollstrukturen, Prozeduren, Funktionen, Modulen usw.
In diesem Artikel werden die häufigsten Fragen und Antworten zu PL / SQL-Interviews erläutert.
Fragen und Antworten zu PL / SQL-Interviews
Lasst uns beginnen!!
F # 1) PL / SQL und SQL unterscheiden?
Antworten: Der Unterschied zwischen SQL und PL / SQL kann wie folgt kategorisiert werden:
SQL | PL / SQL |
---|---|
SQL ist eine natürliche Sprache, die für die interaktive Verarbeitung sehr nützlich ist. | PL / SQL ist eine prozedurale Erweiterung von Oracle - SQL. |
SQL bietet keine prozeduralen Funktionen wie Bedingungstests und Schleifen. | PL / SQL unterstützt prozedurale Funktionen sowie hochsprachige Funktionen wie bedingte Anweisungen, Schleifenanweisungen usw. |
Alle SQL-Anweisungen werden einzeln vom Datenbankserver ausgeführt, was einen zeitaufwändigen Prozess darstellt. | PL / SQL-Anweisungen senden gleichzeitig den gesamten Anweisungsblock an den Datenbankserver, wodurch der Netzwerkverkehr erheblich reduziert wird. |
In SQL gibt es keine Fehlerbehandlungsverfahren. | PL / SQL unterstützt die angepasste Fehlerbehandlung. |
F # 2) Tragen Sie die Eigenschaften von PL / SQL ein?
Antworten:
Die Eigenschaften von PL / SQL sind wie folgt:
- PL / SQL ermöglicht den Zugriff auf und die gemeinsame Nutzung derselben Unterprogramme durch mehrere Anwendungen.
- Es ist für die Portabilität von Code bekannt, da Code auf jedem Betriebssystem ausgeführt werden kann, sofern Oracle darauf geladen ist.
- Mit PL / SQL können Benutzer ihre eigenen benutzerdefinierten Fehlerbehandlungsroutinen schreiben.
- Verbesserte Transaktionsleistung durch Integration in das Oracle-Datenwörterbuch.
F # 3) Welche Datentypen sind in PL / SQL verfügbar?
Antworten: Datentypen definieren die Möglichkeiten zur Identifizierung des Datentyps und der zugehörigen Vorgänge.
Es gibt 4 Arten vordefinierter Datentypen, die wie folgt erklärt werden:
- Skalare Datentypen: Ein skalarer Datentyp ist ein atomarer Datentyp, der keine internen Komponenten enthält.
- Zum Beispiel
- CHAR (Zeichenwertbereich fester Länge zwischen 1 und 32.767 Zeichen)
- VARCHAR2 (Zeichenwertbereich variabler Länge zwischen 1 und 32.767 Zeichen)
- NUMBER (feste Dezimal-, Gleitkomma- oder Ganzzahlwerte)
- BOOLEAN (logischer Datentyp für TRUE FALSE- oder NULL-Werte)
- DATE (speichert Datums- und Uhrzeitinformationen)
- LONG (Zeichendaten variabler Länge)
- Zusammengesetzte Datentypen: Ein zusammengesetzter Datentyp besteht aus anderen Datentypen und internen Komponenten, die einfach verwendet und bearbeitet werden können. Beispielsweise, RECORD, TABLE und VARRAY.
- Referenzdatentypen: Ein Referenzdatentyp enthält Werte, sogenannte Zeiger, die auf andere Programmelemente oder Datenelemente verweisen. Beispielsweise, REF CURSOR.
- Datentypen für große Objekte: Ein Datentyp für große Objekte enthält Werte, sogenannte Locators, die die Position großer Objekte (z. B. Videoclips, Grafiken usw.) definieren, die außerhalb der Zeile gespeichert sind.
- Zum Beispiel
- BFILE (Binärdatei)
- BLOB (Binäres großes Objekt)
- CLOB (Zeichen großes Objekt)
- NCLOB (großes Objekt vom Typ NCHAR)
Empfohlene Lektüre = >> PL SQL-Datentypen
F # 4) Erläutern Sie den Zweck der Datentypen% TYPE und% ROWTYPE anhand des Beispiels.
Antworten: PL / SQL verwendet das Deklarationsattribut% TYPE zur Verankerung. Dieses Attribut gibt den Datentyp einer Variablen, Konstante oder Spalte an. Das% TYPE-Attribut ist nützlich, wenn eine Variable deklariert wird, die denselben Datentyp wie eine Tabellenspalte hat.
Beispielsweise, Die Variable m_empno hat den gleichen Datentyp und die gleiche Größe wie die Spalte empno in Tabelle emp.
m_empno emp.empno%TYPE;
Das% ROWTYPE-Attribut wird verwendet, um eine Variable als Datensatz mit derselben Struktur wie eine Zeile in einer Tabelle zu deklarieren. Die Zeile ist als Datensatz definiert und ihre Felder haben dieselben Namen und Datentypen wie die Spalten in der Tabelle oder Ansicht.
Beispielsweise:
dept_rec dept%ROWTYPE;
Dies deklariert einen Datensatz, der eine ganze Zeile für die DEPT-Tabelle speichern kann.
F # 5) Was verstehen Sie unter PL / SQL-Paketen?
Antworten: PL / SQL-Pakete sind Schemaobjekte, die Funktionen, gespeicherte Prozeduren, Cursor und Variablen an einer Stelle gruppieren.
Pakete bestehen aus 2 obligatorischen Teilen:
- Paketspezifikationen
- Paketkörper
F # 6) Was verstehen Sie unter PL / SQL-Cursorn?
Antworten: PL / SQL erfordert eine spezielle Funktion zum Abrufen und Verarbeiten von mehr als einer Zeile. Diese Ressource wird als Cursor bezeichnet. Ein Cursor ist ein Zeiger auf den Kontextbereich, bei dem es sich um einen Speicherbereich handelt, der SQL-Anweisungen und Informationen zur Verarbeitung der Anweisungen enthält.
PL / SQL-Cursor ist im Grunde ein Mechanismus, bei dem mehrere Zeilen der Daten aus der Datenbank ausgewählt werden und dann jede Zeile einzeln in einem Programm verarbeitet wird.
F # 7) Erklären Sie die Cursortypen.
So initialisieren Sie eine verknüpfte Liste in Java
Antworten: Es gibt zwei Arten von Cursorn.
Sie werden wie folgt erklärt:
a) Explizite Cursor: Bei Abfragen, die mehr als eine Zeile zurückgeben, wird ein expliziter Cursor von einem Programmierer deklariert und benannt. Um den expliziten Cursor in PL / SQL zu verwenden, werden 4 Schritte ausgeführt
- Deklarieren Sie den Cursor
Syntax: CURSOR ist
SELECT-Anweisung;
Hier ist der dem Cursor zugewiesene Name und die SELECT-Anweisung die Abfrage, die Zeilen an die aktive Menge des Cursors zurückgibt.
- Öffnen Sie den Cursor
Syntax: OPEN;
Wobei der Name des zuvor definierten Cursors ist.
- Zeilen vom Cursor abrufen
Syntax: FETCH IN;
Hier bezieht sich auf den Namen des zuvor definierten Cursors, von dem Zeilen abgerufen werden.
stellt die Liste der Variablen dar, die die abgerufenen Daten empfangen.
- Cursor schließen
Syntax: SCHLIESSEN ;
Hier ist der Name des Cursors, der geschlossen wird.
b) Implizite Cursor: Wenn eine SQL-Anweisung ausgeführt wird, erstellt PL / SQL automatisch einen Cursor, ohne zu definieren, dass solche Cursor als implizite Cursor bezeichnet werden.
Für die folgenden Anweisungen verwendet PL / SQL implizite Cursor
- EINFÜGEN
- AKTUALISIEREN
- LÖSCHEN
- SELECT (Abfragen, die genau eine Zeile zurückgeben)
F # 8) Wann verwenden wir Trigger?
Antworten: Das Wort 'Auslöser' bedeutet 'aktivieren'. In PL / SQL ist der Trigger eine gespeicherte Prozedur, die eine Aktion definiert, die von der Datenbank ausgeführt wird, wenn das datenbankbezogene Ereignis ausgeführt wird.
Trigger werden hauptsächlich für folgende Zwecke benötigt:
- Aufrechterhaltung komplexer Integritätsbeschränkungen
- Überwachen von Tabelleninformationen durch Aufzeichnen der Änderungen
- Signalisierung anderer Programmaktionen, wenn Änderungen an der Tabelle vorgenommen werden
- Durchsetzung komplexer Geschäftsregeln
- Ungültige Transaktionen verhindern
F # 9) Erklären Sie den Unterschied in der Ausführung von Triggern und gespeicherten Prozeduren?
Antworten: Eine gespeicherte Prozedur wird explizit ausgeführt, indem eine Prozeduraufrufanweisung von einem anderen Block über einen Prozeduraufruf mit Argumenten ausgegeben wird.
Der Trigger wird implizit ausgeführt, wenn ein auslösendes Ereignis wie das Auftreten von DML-Anweisungen auftritt.
F # 10) Erklären Sie den Unterschied zwischen Triggern und Einschränkungen?
Antwort: Trigger unterscheiden sich in folgenden Punkten von Einschränkungen:
Löst aus | Einschränkungen |
---|---|
Betrifft nur die Zeilen, die nach Aktivierung des Triggers hinzugefügt wurden. | Beeinflussen alle Zeilen der Tabelle, einschließlich derjenigen, die bereits vorhanden sind, wenn die Einschränkung aktiviert ist. |
Trigger werden verwendet, um komplexe Geschäftsregeln zu implementieren, die nicht mithilfe von Integritätsbeschränkungen implementiert werden können. | Einschränkungen erhalten die Integrität der Datenbank. |
F # 11) Was ist ein PL / SQL-Block?
Antworten: In PL / SQL werden Anweisungen in Einheiten gruppiert, die als Blöcke bezeichnet werden. PL / SQL-Blöcke können Konstanten, Variablen, SQL-Anweisungen, Schleifen, bedingte Anweisungen und Ausnahmebehandlung enthalten. Blöcke können auch eine Prozedur, eine Funktion oder ein Paket erstellen.
Breit, Es gibt zwei Arten von PL / SQL-Blöcken:
(i) Anonyme Blöcke: PL / SQL-Blöcke ohne Header werden als anonyme Blöcke bezeichnet. Diese Blöcke bilden nicht den Hauptteil einer Prozedur, Funktion oder eines Triggers.
Beispiel:
DECLARE num NUMBER(2); sq NUMBER(3); BEGIN num:= &Number1; sq := num*num; DBMS_OUTPUT.PUT_LINE(‘Square:’ ||sq); END;
(ii) Benannte Blöcke: PL / SQL-Blöcke mit Header oder Beschriftungen werden als benannte Blöcke bezeichnet. Benannte Blöcke können entweder Unterprogramme (Prozeduren, Funktionen, Pakete) oder Trigger sein.
Empfohlene Lektüre = >> PL SQL-Prozeduren und -Funktionen
Beispiel:
FUNCTION sqr (num IN NUMBER) RETURN NUMBER is sq NUMBER(2); BEGIN sq:= num*num; RETURN sq; END;
F # 12) Unterscheiden Sie zwischen Syntax- und Laufzeitfehlern?
Antworten:
Syntaxfehler sind diejenigen, die von einem PL / SQL-Compiler leicht identifiziert werden können. Diese Fehler können ein Rechtschreibfehler usw. sein.
Laufzeitfehler sind die Fehler im PL / SQL-Block, für die ein Abschnitt zur Ausnahmebehandlung zur Behandlung der Fehler enthalten sein soll. Diese Fehler können die Anweisung SELECT INTO sein, die keine Zeilen zurückgibt.
F # 13) Was sind COMMIT, ROLLBACK und SAVEPOINT?
Antworten: COMMIT, SAVEPOINT und ROLLBACK sind drei Transaktionsspezifikationen, die in PL / SQL verfügbar sind.
COMMIT-Anweisung: Wenn eine DML-Operation ausgeführt wird, werden nur Daten im Datenbankpuffer bearbeitet, und die Datenbank bleibt von diesen Änderungen unberührt. Um diese Transaktionsänderungen in der Datenbank zu speichern / zu speichern, müssen wir die Transaktion festschreiben. Die COMMIT-Transaktion speichert alle ausstehenden Änderungen seit dem letzten COMMIT und dem folgenden Vorgang
- Betroffene Zeilensperren werden aufgehoben
- Transaktion als abgeschlossen markiert
- Transaktionsdetails werden im Datenwörterbuch gespeichert.
Syntax: VERPFLICHTEN;
ROLLBACK-Anweisung: Wenn wir alle Änderungen rückgängig machen oder löschen möchten, die bisher in der aktuellen Transaktion vorgenommen wurden, müssen wir die Transaktion zurücksetzen. Mit anderen Worten, ROLLBACK löscht alle ausstehenden Änderungen seit dem letzten COMMIT oder ROLLBACK.
Syntax zum vollständigen Zurücksetzen einer Transaktion:
ROLLBACK;
SAVEPOINT-Anweisung: Die SAVEPOINT-Anweisung gibt einen Namen und markiert einen Punkt in der Verarbeitung der aktuellen Transaktion. Die Änderungen und Sperren, die vor dem SAVEPOINT in der Transaktion aufgetreten sind, bleiben erhalten, während diejenigen, die nach dem SAVEPOINT auftreten, freigegeben werden.
Syntax:
SPEICHERPUNKT ;
F # 14) Was ist die Mutationstabelle und die Einschränkungstabelle?
Antworten: Eine Tabelle, die derzeit durch eine DML-Anweisung wie das Definieren von Triggern in einer Tabelle geändert wird, wird als a bezeichnet Mutationstabelle .
Eine Tabelle, aus der möglicherweise für eine referenzielle Integritätsbeschränkung gelesen werden muss, wird als bezeichnet Einschränkungstabelle .
F # 15) Was sind tatsächliche und formale Parameter?
Antworten: Die Variablen oder ein Ausdruck, die als Parameter bezeichnet werden und in der Prozeduraufrufanweisung enthalten sind, werden als bezeichnet Aktuelle Parameter .
Beispielsweise: erhöhe_sal (emp_num, Verdienst + Betrag);
Hier im obigen Beispiel sind emp_num und Betrag die beiden tatsächlichen Parameter.
Die Variablen, die im Prozedurheader deklariert sind und auf die im Prozedurkörper verwiesen wird, werden als aufgerufen Formale Parameter .
Beispielsweise:
VERFAHREN erhöhe_sal (emp_id INTEGER) IS
curr_sal REAL:
……… ..
START
SELECT sal INTO cur_sal FROM emp WHERE empno = emp_id;
…….
END erhöhe_sal;
App, mit der Sie ein anderes Telefon ausspionieren können
Hier im obigen Beispiel fungiert emp_id als formaler Parameter.
F # 16) Was ist der Unterschied zwischen ROLLBACK- und ROLLBACK TO-Anweisungen?
Antworten: Die Transaktion wird vollständig beendet, nachdem die ROLLBACK-Anweisung, d. H. Der ROLLBACK-Befehl, eine Transaktion vollständig rückgängig gemacht und alle Sperren aufgehoben hat.
Andererseits ist eine Transaktion nach dem Befehl ROLLBACK TO noch aktiv und wird ausgeführt, da nur ein Teil der Transaktion bis zum angegebenen SAVEPOINT rückgängig gemacht wird.
F # 17) Schreiben Sie ein PL / SQL-Skript, um die folgenden Zahlenreihen anzuzeigen: 99,96,93 …… 9,6,3?
Antworten
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; /
F # 18) Was sind die 3 Parametermodi?
Antworten: 3 Modi des Parameters sind IN, OUT, IN OUT.
Diese können wie folgt erklärt werden:
Wie entferne ich ein Element aus einem Array in Java mit einem Beispiel?
- IN-Parameter: Mit IN-Parametern können Sie Werte an die aufgerufene Prozedur übergeben und auf Standardwerte initialisiert werden. IN-Parameter wirken wie eine Konstante und können keinem Wert zugewiesen werden.
- OUT-Parameter: OUT-Parameter geben einen Wert an den Aufrufer zurück und müssen angegeben werden. OUT-Parameter wirken wie eine nicht initialisierte Variable und können nicht in einem Ausdruck verwendet werden.
- IN OUT-Parameter: Die Parameter IN OUT übergeben Anfangswerte an eine Prozedur und geben aktualisierte Werte an den Aufrufer zurück. IN OUT-Parameter wirken wie eine initialisierte Variable und sollten mit einem Wert versehen werden.
F # 19) Warum ist% ISOPEN für einen impliziten Cursor immer falsch?
Antworten: Als impliziter Cursor ist das SQL% ISOPEN-Attribut immer falsch, da der implizite Cursor für eine DML-Anweisung geöffnet und unmittelbar nach der Ausführung der DML-Anweisung geschlossen wird.
F # 20) Wenn eine DML-Anweisung ausgeführt wird, in welchen Cursorattributen wird das Ergebnis der Anweisung gespeichert?
Antworten: Das Ergebnis der Anweisung wird in 4 Cursorattributen gespeichert.
Diese sind:
- SQL% FOUND
- SQL% NOTFOUND
- SQL% ROWCOUNT
- SQL% ISOPEN
F # 21) Wie kann ein PL / SQL-Code kommentiert werden?
Antworten: Kommentare sind der Text, der im Code enthalten ist, um die Lesbarkeit zu verbessern und das Verständnis des Lesers zu verbessern. Diese Codes werden niemals ausgeführt.
Es gibt zwei Möglichkeiten, in PL / SQL Kommentare abzugeben:
1) Einzeiliger Kommentar: Dieser Kommentar beginnt mit double -.
Beispiel:
ERKLÄREN
num NUMBER (2); - Es ist eine lokale Variable.
START
2) Mehrzeiliger Kommentar: Dieser Kommentar beginnt mit / * und endet mit * /.
Beispiel:
START
num: = & p_num; / * Dies ist eine Hostvariable, die im Programmkörper verwendet wird * /
……….
ENDE
F # 22) Was verstehen Sie unter Ausnahmebehandlung in PL / SQL?
Antworten: Wenn in PL / SQL ein Fehler auftritt, wird die Ausnahme ausgelöst. Mit anderen Worten, um unerwünschte Situationen zu behandeln, in denen PL / SQL-Skripte unerwartet beendet wurden, ist ein Fehlerbehandlungscode im Programm enthalten. In PL / SQL wird der gesamte Code für die Ausnahmebehandlung in einem Abschnitt EXCEPTION abgelegt.
Es gibt 3 Arten von AUSNAHMEN:
- Vordefinierte Ausnahmen: Häufige Fehler mit vordefinierten Namen.
- Undefinierte Ausnahmen: Weniger häufige Fehler ohne vordefinierte Namen.
- Benutzerdefinierte Ausnahmen: Verursachen Sie keinen Laufzeitfehler, sondern verletzen Sie die Geschäftsregeln.
F # 23) Einige vordefinierte Ausnahmen eintragen?
Antworten:
Einige der vordefinierten Ausnahmen sind:
- KEINE DATEN GEFUNDEN: Einzeilige SELECT-Anweisung, bei der keine Daten zurückgegeben werden.
- TOO_MANY_ROWS: Einzeilige SELECT-Anweisung, bei der mehr als eine Zeile zurückgegeben wird.
- INVALID_CURSOR: Es ist eine unzulässige Cursoroperation aufgetreten.
- ZERO_DIVIDE: Versuchte durch Null zu teilen.
F # 24) Was sind PL / SQL-Cursor-Ausnahmen?
Antworten:
Die Ausnahmen in Bezug auf PL / SQL-Cursor sind:
- CURSOR_ALREADY_OPEN
- INVALID_CURSOR
F # 25) Erklären Sie den Unterschied zwischen dem in Prozeduren deklarierten Cursor und den in der Paketspezifikation deklarierten Cursorn.
Antworten: Der in der Prozedur deklarierte Cursor wird als lokal behandelt und kann daher von anderen Prozeduren nicht aufgerufen werden.
Der in der Paketspezifikation deklarierte Cursor wird als global behandelt und kann daher von anderen Prozeduren aufgerufen werden.
F # 26) Was sind STATT Trigger?
Antworten: Die INSTEAD OF-Trigger sind die Trigger, die speziell zum Ändern von Ansichten geschrieben wurden und nicht direkt über SQL DML-Anweisungen geändert werden können.
F # 27) Was sind Ausdrücke?
Antworten: Ausdrücke werden durch eine Folge von Literalen und Variablen dargestellt, die durch Operatoren getrennt sind. In PL / SQL werden Operationen verwendet, um einige Daten zu bearbeiten, zu vergleichen und zu berechnen. Ein Ausdruck ist eine Zusammensetzung aus 'Operatoren' und 'Operanden'.
- Operanden: Dies ist ein Argument für die Operatoren. Operanden können eine Variable, ein Funktionsaufruf oder eine Konstante sein.
- Betreiber: Diese geben die Aktionen an, die für Operatoren ausgeführt werden sollen. Beispiel: '+', '*', Usw.
F # 28) Listen Sie verschiedene Arten von Ausdrücken mit dem Beispiel auf.
Antworten: Ausdrücke können wie folgt sein:
- Numerische oder arithmetische Ausdrücke: Beispiel: 20 * 10+ 15
- Boolesche Ausdrücke: Beispiel: 'Spot' WIE 'sp% t'
- Zeichenfolgenausdrücke: Beispiel: LÄNGE ('NEW YORK' || 'NY')
- Datumsausdrücke: Beispiel: SYSDATE> TO_DATE (’15 -NOV-16 ’,“ TT-MM-JJ ”)
F # 29) Schreiben Sie ein Programm, das die Verwendung der WHILE-Schleife zur Berechnung des Durchschnitts der vom Benutzer eingegebenen Nummern anzeigt. Die Eingabe weiterer Nummern wird durch Eingabe der Nummer 0 gestoppt.
Antworten
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;
F # 30) Was verstehen Sie unter PL / SQL Records?
Antworten: Ein PL / SQL-Datensatz kann als Sammlung von Werten oder beispielsweise als Gruppe mehrerer Informationen bezeichnet werden, von denen jede vom einfacheren Typ ist und als Felder miteinander verknüpft werden kann.
In PL / SQL werden drei Arten von Datensätzen unterstützt:
- Tabellenbasierte Datensätze
- Programmiererbasierte Datensätze
- Cursor-basierte Datensätze
Fazit
PL / SQL ist sehr umfangreich, wenn es um Lernen und Anwendung geht. Ich hoffe, diese Interviewfragen und -antworten helfen Ihnen dabei.
Um mehr über PL SQL zu erfahren, lesen Sie unsere umfassende PL / SQL-Lernprogrammreihe .
Viel Spaß beim Lernen !!
Literatur-Empfehlungen
- Interview Fragen und Antworten
- Fragen und Antworten zum ETL-Testinterview
- Top 30+ beliebte Fragen und Antworten zu Gurkeninterviews
- Top 30 SAS Interview Fragen und Antworten
- Die wichtigsten Fragen zum Oracle-Interview: Fragen zu Oracle Basic, SQL, PL / SQL
- Top 30 Fragen und Antworten zum Interview mit Sicherheitstests
- 30+ Top Scrum Interview Fragen und Antworten (2021 LIST)
- Top 30 Fragen und Antworten zum DBMS-Interview