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

So erstellen Sie VARRAYs als Datenbankobjekt in der Oracle-Datenbank

Der Geltungsbereich des VARRAYs, das als PL/SQL-Blockmember erstellt wird, ist auf den Block beschränkt, in dem es erstellt wird, das heißt, wir können dieses VARRAY nicht außerhalb seines Blocks verwenden oder sogar wiederverwenden, und das ist sein größter Nachteil. Lesen Sie also weiter, um herauszufinden, wie wir diesen Nachteil von VARRAY überwinden können.

Dieser Nachteil kann leicht überwunden werden, wenn wir einen Weg finden, das VARRAY außerhalb des PL/SQL-Blocks zu erstellen und dauerhaft im Schema zu speichern. Glücklicherweise können wir beide Ziele erreichen, indem wir VARRAY als Datenbankobjekt erstellen. Genau das werden wir in diesem Tutorial lernen.

In diesem Tutorial lernen wir –

  • Wie man VARRAY als Datenbankobjekt erstellt.
  • Wie man diesen Varray verwendet.
  • Einfügen von Daten in den VARRAY.
  • Abrufen von Daten in (aus) dem VARRAY
  • So aktualisieren Sie die Daten des VARRAY.

Beginnen wir mit dem ersten Schritt.

Wie erstelle ich VARRAY als Datenbankobjekt?

	SET SERVEROUTPUT ON;
	CREATE OR REPLACE TYPE dbObj_vry IS VARRAY (5) OF NUMBER;
	/

Der obige Code erstellt bei erfolgreicher Ausführung ein VARRAY mit dem Namen dbObj_vry, das eine Größenbeschränkung von 5 Elementen hat und dessen Datentyp NUMBER ist. Dieses VARRAY hat einen größeren Geltungsbereich und kann nicht nur innerhalb des PL/SQL-Blocks, sondern auch mit anderen Schemaobjekten verwendet werden.

Wie verwende ich das als Datenbankobjekt erstellte VARRAY?

Der Vorteil der Definition von VARRAY als Datenbankobjekt besteht darin, dass es von jedem Programm referenziert werden kann, das die Berechtigung hat, es zu verwenden. Sie können das VARRAY mit Tabellen, Datensätzen oder sogar mit PL/SQL-Blöcken verwenden.

Machen wir das Beispiel:

Beispiel 1. Wie definiert man eine Spalte einer Tabelle mit VARRAY?

CREATE TABLE calendar(
    day_name        VARCHAR2(25),
    day_date        dbObj_vry
);
/

Im obigen Code haben wir eine Tabelle mit dem Namen Calendar erstellt, die zwei Spalten day_name und day_date hat. Die erste Spalte kann Daten vom Datentyp VARCHAR2 enthalten, während die zweite Spalte Daten vom Typ dbObj_vry enthalten kann, der ein VARRAY ist.

Info:Was bedeutet es, eine Spalte einer Tabelle als VARRAY-Typ zu definieren?
Das Definieren einer Spalte einer Tabelle als VARRAY-Typ bedeutet, dass sie „n“ Werte enthalten kann. Wobei „n“ gleich der Größenbeschränkung dieses Varrays ist. In unserem Fall beträgt die Größenbeschränkung von VARRAY 5, was bedeutet, dass die Spalte „Day Date“ der Tabelle Calendar 5 Werte enthalten kann.

Wie füge ich Daten in das VARRAY ein?

INSERT INTO calendar ( day_name, day_date ) 
VALUES ( 'Sunday', dbObj_vry (7, 14, 21, 28) );    

Diese DML-Anweisung zum Einfügen fügt eine Zeile in die Kalendertabelle ein. Das Einfügen von Daten in die erste Spalte „Tagesname“, die vom Datentyp varchar2 ist, ist einfach. Sie müssen nur die gewünschten Daten schreiben und in einfache Anführungszeichen setzen. Das Gleiche gilt jedoch nicht für die zweite Spalte „Day Date“, die vom Typ VARRAY ist. Um Daten in die Spalte vom Typ VARRAY einzufügen, müssen Sie zuerst den Namen des varray schreiben und die Daten angeben.

Außerdem müssen Sie vier Dinge sicherstellen

  1. Die Daten, die Sie angeben, müssen in Klammern eingeschlossen werden.
  2. Der Datentyp der Daten muss mit dem Datentyp der Elemente Ihres VARRAY übereinstimmen, was in unserem Fall NUMBER ist.
  3. Die Anzahl der Elemente, die Sie in die Spalte einfügen, muss entweder kleiner oder gleich der Größenbeschränkung des VARRAY sein. In unserem Fall sind es 5 und wir fügen 4 Elemente in die Spalte ein, was völlig in Ordnung ist. Aber wenn ich annehme, ich füge 6 Elemente in die Spalte ein, dann wird es einen Fehler geben.
  4. Wenn Sie mehrere Daten in die VARRAY-Spalte einfügen, achten Sie darauf, die Elemente durch Semikolon voneinander zu trennen.

Wie rufe ich die Daten vom VARRAY ab?

Daten können mit der SELECT-Anweisung abgerufen werden. Jede korrekt geschriebene SELECT-Anweisung erledigt die Arbeit. Zum Beispiel

SELECT * FROM calendar;

Dadurch werden alle Daten aus dem Tischkalender abgerufen.

Falls Sie die in der Spalte gespeicherten Daten, die Daten vom Typ VARRAY enthalten, in einem relationalen Format anzeigen möchten, können Sie die Hilfe des TABLE-Ausdrucks verwenden. Zum Beispiel

SELECT 
    tab1.day_name, 
    vry.column_value AS "Date"
FROM calendar tab1, TABLE (tab1.day_date) vry;

Diese SELECT-Anweisung zeigt Ihnen die Daten aus beiden Spalten in einem relationalen Format. Der TABLE-Ausdruck kann die Sammlungsinstanz öffnen und die Objektzeilen im relationalen Format darstellen.

Wie aktualisiere ich die Daten der Spalte vom Typ VARRAY?

Das Aktualisieren der Werte der Spalte vom Typ VARRAY ist ziemlich einfach. Das folgende Beispiel zeigt Ihnen, wie Sie die Werte der day_date-Spalten aktualisieren.

UPDATE calendar 
SET day_date = dbObj_vry(10,14,21,28) 
WHERE day_name = 'Sunday';

Beispiel 2. Wie verwende ich VARRAY mit PL/SQL-Block?

Im obigen Beispiel haben wir gelernt, wie man das VARRAY verwendet, das als Datenbankobjekt erstellt wird, um die Spalte einer Tabelle zu definieren. Jetzt werden wir sehen, wie man denselben Varray innerhalb eines PL/SQL-Blocks verwendet.

DECLARE
    vry_obj dbObj_vry    := dbObj_vry();
BEGIN
    FOR i IN 1..vry_obj.LIMIT
    LOOP
        vry_obj.EXTEND; 
        vry_obj(i):= 10*i;
        DBMS_OUTPUT.PUT_LINE(vry_obj(i));    
    END LOOP;
END;
/

Sie haben dieses Beispiel im letzten Tutorial gesehen. Hier gibt es keine so großen Änderungen, außer dass wir diesmal das VARRAY nicht innerhalb des Blocks definiert haben, sondern als eigenständiges Datenbankobjekt erstellt haben. Ich schlage vor, dass Sie sich das letzte Tutorial ansehen, in dem ich den obigen Code ausführlich erklärt habe.

Das ist das PL/SQL-Tutorial zum Erstellen von VARRAY als Datenbankobjekt in Oracle. Ich hoffe, das Lesen hat Ihnen Spaß gemacht. Wenn ja, dann teilen Sie diesen Blog auf Ihrem sozialen Netzwerk mit Ihren Freunden. Vielen Dank und einen schönen Tag!