Oracle PL / SQL-Datensatztyp mit Beispielen

Inhaltsverzeichnis:

Anonim

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 TYPE  IS 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:

DECLARETYPE  IS 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.