Was ist der Datensatztyp?
Ein Datensatztyp ist ein komplexer Datentyp, mit dem der Programmierer einen neuen Datentyp mit der gewünschten Spaltenstruktur erstellen kann.
- 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 ODER besteht
- 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 zum Deklarieren einer Variablen in Programmen verwendet.
- Mit dem Schlüsselwort 'TYPE' wird der Compiler angewiesen, den neuen Datentyp zu erstellen.
- Es kann auf " Datenbankebene" erstellt werden, die als Datenbankobjekte gespeichert, in der gesamten Datenbank verwendet werden kann, oder es kann auf den " Unterprogrammebenen" erstellt werden , die nur innerhalb der Unterprogramme sichtbar sind.
- Der Datensatztyp auf Datenbankebene kann auch für die Tabellenspalten deklariert werden, sodass eine einzelne Spalte die komplexen Daten enthalten kann.
- Auf die Daten in diesem Datentyp kann zugegriffen werden, indem auf ihren Variablennamen gefolgt von einem Punktoperator (.) Gefolgt wird, gefolgt von Spaltenname, dh '
. '.
Syntax für die Deklaration auf Datenbankebene:
CREATE TYPEIS RECORD( ,);
In der ersten Syntax sehen wir das Schlüsselwort 'CREATE TYPE', das den Compiler anweist, den Datensatztyp "type_name_db" mit der angegebenen Spalte als Datenbankobjekt zu erstellen.
Dies wird als einzelne Anweisung und nicht in einem Block angegeben.
Syntax für die Deklaration auf Unterprogrammebene:
DECLARETYPEIS RECORD( ,);BEGIN ;END;
In der Syntax erstellen wir den Datensatztyp "type_name" nur innerhalb des Unterprogramms.
In beiden Deklarationsmethoden ist die Definition der Spalte und des Datentyps ähnlich.
Beispiel 1: RECORD-Typ als Datenbankobjekt
In diesem Programm werden wir sehen, wie "Datensatztyp" als Datenbankobjekt erstellt wird. Wir werden den Datensatztyp 'emp_det' mit vier Spalten erstellen. Die Spalten und ihr Datentyp lauten wie folgt:
- EMP_NO (NUMBER)
- EMP_NAME (VARCHAR2 (150))
- MANAGER (NUMMER)
- GEHALT (NUMMER)
CREATE TYPE emp_det IS OBJECT(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);/Ausgabe:
Type created
Code Erläuterung:
- Der obige Code erstellt den Typ emp_det als Datenbankobjekt.
- Es hat 4 Spalten emp_no, emp_name, Manager und Gehalt wie definiert.
- Jetzt ähnelt 'emp_det' einem anderen Datentyp (wie NUMBER, VARCHAR @ usw.) und ist in der gesamten Datenbank sichtbar. Daher kann dies in der gesamten Datenbank verwendet werden, um die Variable dieses Typs zu deklarieren.
Ausgabe:
Erstellt den Typ 'emp_det' als Datensatztyp auf Datenbankebene.
Beispiel 2: Datensatztyp auf Unterprogrammebene - Zugriff auf Spaltenebene
In diesem Beispiel erfahren Sie, wie Sie einen Datensatztyp auf Unterprogrammebene erstellen und die Werte nach Spaltenebene auffüllen und abrufen.
Wir werden 'emp_det' record_type auf Unterprogrammebene erstellen und dasselbe verwenden, um Daten daraus zu füllen und anzuzeigen.
DECLARETYPE emp_det IS RECORD(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);guru99_emp_rec emp_det;BEGINguru99_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;/
Ausgabe:
Employee DetailEmployee Number: 1001Employee Name: XXXEmployee Salary: 10000Employee Manager Number: 1000
Code Erläuterung:
- Codezeile 2-8 : Der Datensatztyp 'emp_det' wird mit den Spalten emp_no, emp_name, Gehalt und Manager des Datentyps NUMBER, VARCHAR2, NUMBER, NUMBER deklariert.
- Codezeile 9: Die Variable guru99_emp_rec wird 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 Sie das Feld 'emp_no' von 'guru99_emp_rec' mit dem Wert 1001.
- Codezeile 12: Füllen Sie das Feld 'emp_name' von 'guru99_emp_rec' mit dem Wert XXX.
- Codezeile 13: Füllen Sie das Feld 'manager' von 'guru99_emp_rec' mit dem Wert 1000.
- Codezeile 14: Füllen Sie das Feld 'Gehalt' von 'guru99_emp_rec' mit dem Wert 10000 aus.
- Codezeile 15-19: Anzeige des Werts von 'guru99_emp_rec' in der Ausgabe.
Beispiel 3: Datensatztyp auf Zugriff auf Unterprogramm- und Zeilenebene
In diesem Beispiel wird gezeigt, wie ein Datensatztyp auf Unterprogrammebene erstellt und als Zeilenebene aufgefüllt wird. Wir werden 'emp_det' record_type auf Unterprogrammebene erstellen und dasselbe verwenden, um Daten daraus zu füllen und anzuzeigen.
DECLARETYPE emp_det IS RECORD(EMP_NO NUMBER,EMP_NAME YARCHAR2( 150),MANAGER NUMBER,SALARY NUMBER);guru99_emp_rec emp_det;BEGININSERT 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 Erläuterung:
- Codezeile 2-8 : Der Datensatztyp 'emp_det' wird mit den Spalten emp_no, emp_name, Gehalt und Manager des Datentyps NUMBER, VARCHAR2, NUMBER, NUMBER deklariert.
- Codezeile 9: Die Variable guru99_emp_rec wird 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 obigen Einfügetransaktion.
- Codezeile 13: Auffüllen der Variablen 'guru99_emp_rec' als Daten auf Zeilenebene aus der Auswahlabfrage für die Mitarbeiternummer 1002.
- Codezeile 15-19: Anzeige des Werts von 'guru99_emp_rec' in der Ausgabe.
Ausgabe:
Employee DetailEmployee Number: 1002Employee Name: YYYEmployee Salary: 1000Employee Manager Number: 15000
Hinweis: Auf den Datensatztyp kann nur in Spaltenebene zugegriffen werden, während sein Wert in einen beliebigen Ausgabemodus umgeleitet wird.