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.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: