Oracle PL/SQL-Datensatztyp mit Beispielen

Was ist ein Datensatztyp?

Ein Datensatztyp ist ein komplexer Datentyp, der es dem Programmierer ermöglicht, einen neuen Datentyp mit der gewünschten Spaltenstruktur zu erstellen.

  • Es gruppiert eine oder mehrere Spalten, um einen neuen Datentyp zu bilden
  • Diese Spalten haben einen eigenen Namen und Datentyp
  • Ein Datensatztyp kann die Daten akzeptieren
    • Als einzelner Datensatz, der aus vielen Spalten besteht ODER
    • Es kann den Wert für eine bestimmte Spalte eines Datensatzes akzeptieren
  • Datensatztyp bedeutet einfach einen neuen Datentyp. Sobald der Datensatztyp erstellt wurde, wird er als neuer Datentyp in der Datenbank gespeichert und zur Deklaration einer Variablen in Programmen verwendet.
  • Es wird das Schlüsselwort verwendet 'TYP' um den Compiler anzuweisen, dass er den neuen Datentyp erstellt.
  • Es kann erstellt werden unter „Datenbankebene“ die als Datenbankobjekte gespeichert, in der gesamten Datenbank verwendet oder am „Server“ erstellt werden können.Unterprogrammebenen“, die nur innerhalb der Unterprogramme sichtbar ist.
  • Der Datensatztyp auf Datenbankebene kann auch für die Tabellenspalten deklariert werden, sodass einzelne Spalten die komplexen Daten enthalten können.
  • Auf die Daten in diesem Datentyp kann zugegriffen werden, indem auf den Variablennamen gefolgt vom Punktoperator (.) gefolgt vom Spaltennamen verwiesen wird, d. h. ' . '

Syntax für die Deklaration auf Datenbankebene:

Oracle PL/SQL-Datensatztyp

CREATE TYPE <type_name_db> IS RECORD
(
<column 1> <datatype>,
);

In der ersten Syntax sehen wir das Schlüsselwort „CREATE TYPE“, das den Compiler anweist, den Datensatztyp mit dem Namen „type_name_db“ mit der angegebenen Spalte als Datenbankobjekt zu erstellen.

Dies erfolgt als einzelne Anweisung und nicht innerhalb eines Blocks.

Syntax für die Deklaration auf Unterprogrammebene:

Oracle PL/SQL-Datensatztyp

DECLARE
TYPE <type_name> IS RECORD
(
<columnl> <datatype>,
);
BEGIN
<execution_section>;
END;

In der Syntax erstellen wir den Datensatztyp mit dem Namen „type_name“ nur innerhalb des Unterprogramms.

Bei beiden Deklarationsmethoden ist die Definition der Spalte und des Datentyps ähnlich.

Beispiel 1: RECORD-Typ als Datenbankobjekt

In diesem Programm werden wir sehen, wie man „Datensatztyp“ als Datenbankobjekt erstellt. Wir werden den Datensatztyp „emp_det“ mit vier Spalten erstellen. Die Spalten und ihr Datentyp sind wie folgt:

  • EMP_NO (ANZAHL)
  • EMP_NAME (VARCHAR2 (150))
  • MANAGER (ANZAHL)
  • GEHALT (ANZAHL)
CREATE TYPE emp_det IS OBJECT
(
EMP_NO NUMBER,
EMP_NAME VARCHAR2(150),
MANAGER NUMBER,
SALARY NUMBER 
);
/

Ausgang:

Type created

Code-Erklärung:

  • Der obige Code erstellt den Typ emp_det als Datenbankobjekt.
  • Es enthält die vier Spalten emp_no, emp_name, Manager und Gehalt wie definiert.
  • Jetzt ähnelt 'emp_det' anderen Datentyp (wie NUMBER, VARCHAR@ usw.) Und es ist in der gesamten Datenbank sichtbar. Daher kann dies in der gesamten Datenbank verwendet werden, um die Variable dieses Typs zu deklarieren.

Ausgang:

Der Typ „emp_det“ wurde als Datensatztyp auf Datenbankebene angelegt.

Beispiel 2: Datensatztyp auf Unterprogrammebene – Zugriff auf Spaltenebene

In diesem Beispiel werden wir sehen, wie man einen Datensatztyp auf Unterprogrammebene erstellt und wie man die Werte auf Spaltenebene ausfüllt und daraus abruft.

Wir werden den Datensatztyp „emp_det“ auf Unterprogrammebene erstellen und ihn zum Auffüllen und Anzeigen von Daten daraus verwenden.

Oracle PL/SQL-Datensatztyp

DECLARE
TYPE emp_det IS RECORD
(
EMP_NO NUMBER, 
EMP_NAME VARCHAR2(150),
MANAGER NUMBER, 
SALARY NUMBER
);
guru99_emp_rec emp_det;
BEGIN
guru99_emp_rec.emp_no:= 1001;	
guru99_emp_rec.emp_name:=:'XXX';	
guru99_emp_rec.manager:= 1000;	
guru99_emp_rec.salary:=10000;	
dbms_output.put.line('Employee Detail');
dbms_output.put_line ('Employee Number: '||guru99_emp_rec.emp_no); 
dbms_output.put_line ('Employee Name: '||guru99_emp_rec.emp_name); 
dbms_output.put_line ('Employee Salary: ' ||guru99_emp_rec.salary); 
dbms_output.put_line ('Employee Manager Number: '||guru99_emp_rec.manager);
END;
/

Ausgang:

Employee Detail
Employee Number: 1001
Employee Name: XXX
Employee Salary: 10000 
Employee Manager Number: 1000

Code-Erklärung:

  • Codezeile 2-8: Der Datensatztyp „emp_det“ wird mit den Spalten „empf_no“, „em_name“, „salary“ und „manager“ des Datentyps NUMBER, VARCHAR2, NUMBER, NUMBER deklariert.
  • Codezeile 9: Die Variable guru99_emp_rec ist als Datentyp „emp_det“ deklariert. Jetzt das Variable kann den Wert enthalten, der alle oben genannten 4 Felder/Spalten enthält.
  • Codezeile 11: Füllen des Felds „emp_no“ von „guru99_emp_rec“ mit dem Wert 1001.
  • Codezeile 12: Füllen des Felds „emp_name“ von „guru99_emp_rec“ mit dem Wert XXX.
  • Codezeile 13: Füllen des Felds „manager“ von „guru99_emp_rec“ mit dem Wert 1000.
  • Codezeile 14: Füllen des Felds „Gehalt“ von „guru99_emp_rec“ mit dem Wert 10000.
  • Codezeile 15-19: Zeigt den Wert von „guru99_emp_rec“ in der Ausgabe an.

Beispiel 3: Datensatztyp auf Unterprogrammebene – Zugriff auf Zeilenebene

In diesem Beispiel erfahren Sie, wie Sie einen Datensatztyp auf Unterprogrammebene erstellen und ihn auf Zeilenebene füllen. Wir werden den Datensatztyp „emp_det“ auf Unterprogrammebene erstellen und ihn zum Auffüllen und Anzeigen von Daten daraus verwenden.

Oracle PL/SQL-Datensatztyp

DECLARE
TYPE emp_det IS RECORD
(
EMP_NO NUMBER,
EMP_NAME YARCHAR2( 150),
MANAGER NUMBER,
SALARY NUMBER
);
guru99_emp_rec emp_det;
BEGIN
INSERT INTO emp (emp_no, emp_name, salary, manager) VALUES (1002,'YYY',15000,1000);
COMMIT;
SELECT emp_no, emp_name, salary, manager INTO guru99_emp_rec FROM emp WHERE emp_no=1002;
dbms_output.put_line (‘Employee Detail’);
dbms_output.put_line (‘Employee Number: '||guru99_emp_rec.emp_no); 
dbms_output.put_line (‘Employee Name: '||guru99_emp_rec.emp_name); 
dbms_output.put_line (‘Employee Salary: '||guru99_emp_rec. salary); 
dbms_output.put_line (‘Employee Manager Number: '||guru99_emp_rec.manager);
END;
/

Code-Erklärung:

  • Codezeile 2-8: Der Datensatztyp „emp_det“ wird mit den Spalten „empf_no“, „em_name“, „salary“ und „manager“ des Datentyps NUMBER, VARCHAR2, NUMBER, NUMBER deklariert.
  • Codezeile 9: Die Variable guru99_emp_rec ist als Datentyp „emp_det“ deklariert. Jetzt kann diese Variable den Wert enthalten, der alle oben genannten 4 Felder/Spalten enthält.
  • Codezeile 11: Füllen der Tabelle emp mit den Daten 1002 als emp_no, YYY als emp_name, 15000 als Gehalt und 1000 als Managernummer.
  • Codezeile 12: Festschreiben der oben genannten Einfügetransaktion.
  • Codezeile 13: Füllen der Variablen „guru99_emp_rec“ als Daten auf Zeilenebene aus der Auswahlabfrage für die Mitarbeiternummer 1002.
  • Codezeile 15-19: Zeigt den Wert von „guru99_emp_rec“ in der Ausgabe an.

Ausgang:

Employee Detail 
Employee Number: 1002 
Employee Name: YYY 
Employee Salary: 1000 
Employee Manager Number: 15000

Hinweis: Auf den Datensatztyp kann nur auf Spaltenebene zugegriffen werden, während sein Wert in einen beliebigen Ausgabemodus umgeleitet wird.