sql >> Database >  >> RDS >> Oracle

VARRAY's maken als databaseobject in Oracle Database?

De reikwijdte van de VARRAY die is gemaakt als PL/SQL-bloklid is beperkt tot het blok waarin het is gemaakt, wat betekent dat we deze VARRAY niet buiten zijn blok kunnen gebruiken of zelfs opnieuw kunnen gebruiken en dat is het grootste nadeel. Dus ga je gang en lees verder om erachter te komen hoe we dit nadeel van VARRAY kunnen overwinnen.

Dit nadeel kan gemakkelijk worden overwonnen als we een manier kunnen vinden om de VARRAY buiten het PL/SQL-blok te maken en deze permanent in het schema op te slaan. Gelukkig kunnen we beide doelen bereiken door de VARRAY als databaseobject te maken. Dat is precies wat we in deze tutorial gaan leren.

In deze tutorial zullen we leren –

  • Hoe maak je VARRAY aan als database-object.
  • Hoe die varray te gebruiken.
  • Hoe gegevens in de VARRAY in te voegen.
  • Hoe gegevens op te halen in (van) de VARRAY
  • De gegevens van de VARRAY bijwerken.

Laten we beginnen met de eerste stap.

Hoe VARRAY als databaseobject maken?

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

Bovenstaande code zal bij succesvolle uitvoering een VARRAY maken met de naam dbObj_vry met een maximale grootte van 5 elementen en hun datatype zal NUMBER zijn. Deze VARRAY heeft een breder bereik en kan niet alleen binnen het PL/SQL-blok worden gebruikt, maar ook met andere schema-objecten.

Hoe de VARRAY gebruiken die is gemaakt als databaseobject?

Het voordeel van het definiëren van de VARRAY als databaseobject is dat ernaar kan worden verwezen vanuit elk programma dat toestemming heeft om het te gebruiken. U kunt de VARRAY gebruiken met tabellen, records of zelfs met PL/SQL-blokken.

Laten we het voorbeeld doen:

Voorbeeld 1. Hoe definieer je een kolom van een tabel met VARRAY?

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

In de bovenstaande code hebben we een tabel gemaakt met de naam Kalender die twee kolommen heeft dag_naam en dag_datum. De eerste kolom kan gegevens van het VARCHAR2-gegevenstype bevatten, terwijl de tweede kolom gegevens kan bevatten van een dbObj_vry-type dat een VARRAY is.

Info:wat betekent het definiëren van een kolom van een tabel als VARRAY-type?
Het definiëren van een kolom van een tabel als VARRAY-type betekent dat deze 'n' aantal waarden erin kan bevatten. Waarbij 'n' gelijk is aan de maximale grootte van die varray. In ons geval is de maximale grootte van VARRAY 5, wat betekent dat de kolom 'Dag Datum' van tabel Kalender 5 waarden kan bevatten.

Hoe gegevens in de VARRAY invoegen?

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

Deze insert DML-instructie zal een rij invoegen in de kalendertabel. Het invoegen van gegevens in de eerste kolom 'Dagnaam' die van het varchar2-gegevenstype is, is eenvoudig. U hoeft alleen maar de gewenste gegevens te schrijven en deze tussen enkele aanhalingstekens te plaatsen. Maar hetzelfde geldt niet voor de tweede kolom 'Dag Datum' die van het type VARRAY is. Om gegevens in te voegen in de kolom die van het type VARRAY is, moet u eerst de naam van de varray schrijven en de gegevens invoeren.

Je moet ook voor vier dingen zorgen

  1. De gegevens die u invoert, moeten tussen haakjes staan.
  2. Het gegevenstype van de gegevens moet overeenkomen met het gegevenstype van de elementen van uw VARRAY, wat in ons geval NUMBER is.
  3. Het aantal elementen dat u in de kolom invoegt, moet kleiner zijn dan of gelijk zijn aan de maximale grootte van de VARRAY. In ons geval is het 5 en we voegen 4 elementen in de kolom in, wat helemaal in orde is. Maar als ik veronderstel dat ik 6 elementen in de kolom invoeg, dan zal er een fout zijn.
  4. Als u meerdere gegevens in de VARRAY-kolom invoegt, zorg er dan voor dat u de elementen van elkaar scheidt met een puntkomma.

Hoe de gegevens van de VARRAY ophalen?

Gegevens kunnen worden opgehaald met behulp van de SELECT-instructie. Elke correct geschreven SELECT-instructie zal het werk doen. Bijvoorbeeld

SELECT * FROM calendar;

Hiermee worden alle gegevens uit de tafelkalender opgehaald.

Als u de gegevens wilt weergeven die zijn opgeslagen in de kolom, die gegevens van het type VARRAY bevat, in een relationeel formaat, dan kunt u de hulp van TABLE-expressie gebruiken. Bijvoorbeeld

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

Deze SELECT-instructie toont u de gegevens van beide kolommen in een relationeel formaat. De TABLE-expressie kan de verzamelingsinstantie openen en de objectrijen in relationele indeling weergeven.

Hoe de gegevens van de kolom VARRAY-type bijwerken?

Het bijwerken van de waarden van de kolom van het type VARRAY is vrij eenvoudig. Het onderstaande voorbeeld laat zien hoe u de waarden van day_date-kolommen kunt bijwerken.

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

Voorbeeld 2. Hoe VARRAY gebruiken met PL/SQL-blok?

In het bovenstaande voorbeeld hebben we geleerd hoe we de VARRAY, die is gemaakt als Database-object, kunnen gebruiken om de kolom van een tabel te definiëren. Nu zullen we zien hoe we dezelfde varray in een PL/SQL-blok kunnen gebruiken.

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;
/

Je hebt dit voorbeeld gezien in de laatste tutorial. Er zijn hier niet zulke grote veranderingen, behalve dat we deze keer in plaats van de VARRAY in het blok te definiëren, het als een op zichzelf staand database-object hebben gemaakt. Ik raad je aan om de laatste tutorial te bekijken waarin ik de bovenstaande code in detail heb uitgelegd.

Dat is de PL/SQL-zelfstudie over het maken van VARRAY als databaseobject in Oracle. Ik hoop dat je het leuk vond om te lezen, als dat zo is, zorg er dan voor dat je deze blog op je social media deelt met je vrienden. Bedankt en een fijne dag verder!


  1. Back-up terugzetten van SQL Server-database op lagere versie

  2. R12.2 Online patching gereedheidsrapport

  3. Hoe een Excel-bestand te importeren in een MySQL-database

  4. Compileren van de pg_repack-extensie in binair formaat van PostgreSQL-installatie