Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So erstellen Sie eine benutzerdefinierte Datensatzdatentyp-Variable in der Oracle-Datenbank

Bisher haben wir gesehen, wie man tabellenbasierte und cursorbasierte Datensatzdatentyp-Variablen erstellt. Was übrig bleibt, ist der benutzerdefinierte Datensatzdatentyp, den wir im heutigen Tutorial behandeln werden.

Wie der Name schon sagt, sind benutzerdefinierte Datensätze die Datensatzvariablen, deren Struktur vom Benutzer definiert wird, was im Gegensatz zu den tabellenbasierten oder Cursor-basierten Datensätzen steht, deren Strukturen von ihren jeweiligen Tabellen oder Cursor abgeleitet werden. Das bedeutet, dass Sie bei benutzerdefinierten Datensätzen die vollständige Kontrolle über die Struktur Ihrer Datensatzvariablen haben.

Der Erstellungsprozess der benutzerdefinierten Datensatzvariablen ist in zwei Teile unterteilt. Bevor wir den Datensatz definieren, müssen wir zuerst den TYP für die Datensatzvariable definieren. Dieser TYPE wird zur Basis der User Define Record-Variablen und hilft bei der Steuerung ihrer Struktur. Sobald der TYP erfolgreich deklariert ist, können wir ihn zum Erstellen unserer benutzerdefinierten Datensatzvariablen verwenden.

Syntax von benutzerdefinierten Datensätzen in der Oracle-Datenbank

Nachfolgend finden Sie die Syntax zum Erstellen des Typs für die Datentypvariable des benutzerdefinierten Datensatzes.

TYPE type_name IS RECORD (
field_name1 datatype 1,
field_name2 datatype 2,
...
field_nameN datatype N 
);

Sobald wir unseren TYPE deklariert haben, können wir unsere Record-Variable erstellen. Diese Variable erhält dann alle Eigenschaften des Typs, mit dem sie erstellt wurde. Und hier ist die Syntax zum Erstellen der benutzerdefinierten Datensatzdatentypvariablen.

record_name TYPE_NAME;

Ist Ihnen aufgefallen, dass wir im Gegensatz zur tabellenbasierten oder Cursor-basierten Datensatzvariablen hier kein %ROWTYPE-Attribut verwenden müssen, um die Datensatzvariable zu deklarieren?

Sie können sich das Video-Tutorial auf meinem YouTube-Kanal ansehen, um eine detaillierte Erklärung der obigen Syntax zu erhalten.

Beispiel:So erstellen Sie eine benutzerdefinierte Datensatzdatentypvariable.

Schritt 1:Deklarieren Sie den Typ für die benutzerdefinierte Datensatzvariable

SET SERVEROUTPUT ON;
DECLARE
  TYPE rv_dept IS RECORD(
    f_name  VARCHAR2(20),
    d_name  DEPARTMENTS.department_name%TYPE 
  );

Schritt 2:Benutzerdefinierte Datensatzvariable deklarieren

Nachdem Sie den TYP erstellt haben, können Sie Ihre benutzerdefinierte Datensatzvariable erstellen.

var1 rv_dept;

Diese obige PL/SQL-Anweisung erstellt eine Datensatzvariable mit dem Namen VAR1.

Schritt 3:Initialisieren Sie die benutzerdefinierte Datensatzvariable.

Benutzerdefinierte Datensatzvariablen können auf mehrere Arten initialisiert werden. Beispielsweise können Sie die Datensatzvariable direkt initialisieren, indem Sie ihr mit der Zuweisungsvariable einen Wert zuweisen, oder Sie können die in der Spalte einer Tabelle gespeicherten Werte mit der Anweisung SELECT-INTO abrufen. Fahren wir also mit unserem Beispiel fort und lernen, wie eine benutzerdefinierte Datensatzvariable mit der SELECT-INTO-Anweisung initialisiert wird.

Als nächstes schreibe ich den Ausführungsabschnitt. Im Ausführungsabschnitt haben wir eine SELECT-Anweisung, die die Mitarbeitertabelle und die Abteilungstabelle verbindet und den Vornamen und den Abteilungsnamen des jeweiligen Mitarbeiters zurückgibt.

BEGIN
  SELECT first_name , department_name 
  INTO var1.f_name, var1.d_name
  FROM employees  join departments
  Using (department_id) WHERE employee_id = 100; 
  DBMS_OUTPUT.PUT_LINE(var1.f_name||' '||var1.d_name);
END;

Die Select-Anweisung, die wir hier haben, gibt den Vornamen und den Abteilungsnamen des Mitarbeiters zurück, dessen Mitarbeiter-ID 100 ist. Die Daten für beide Spalten stammen aus verschiedenen Tabellen, daher haben wir hier einen JOIN verwendet. Da zwei verschiedene Tabellen an der Abfrage beteiligt sind, ist die Verwendung einer tabellenbasierten Datensatzvariablen in einer solchen Situation nicht möglich, daher ist die brauchbare Lösung die benutzerdefinierte Datensatzvariable.

Lassen Sie uns alle oben genannten Codeblöcke zu einem einzigen anonymen PL/SQL-Block zusammenfügen.

SET SERVEROUTPUT ON;
DECLARE
  TYPE rv_dept IS RECORD(
    f_name  VARCHAR2(20),
    d_name  departments.department_name%type 
  );
  var1 rv_dept;
BEGIN
  SELECT first_name , department_name 
  INTO var1.f_name, var1.d_name
  FROM employees  join departments
  Using (department_id) WHERE employee_id = 100;
  
  DBMS_OUTPUT.PUT_LINE(var1.f_name||' '||var1.d_name);
END;
/

Auf diese Weise erstellen wir eine benutzerdefinierte Datensatzdatentypvariable in der Oracle-Datenbank. Ich hoffe, Sie hatten Spaß beim Lesen und haben etwas Neues gelernt. Außerdem verschenke ich die Waren von RebellionRider jeden Monat an einen zufällig ausgewählten Gewinner, also stellen Sie sicher, dass Sie diesen Blog mit Ihren Freunden in Ihren sozialen Netzwerken teilen.

Das ist alles Leute, danke und einen schönen Tag!