sql >> Databasteknik >  >> RDS >> Oracle

Hur man skapar VARRAYs som databasobjekt i Oracle Database

Omfattningen av VARRAY som skapas som PL/SQL-blockmedlem är begränsad till blocket där den skapas, det betyder att vi inte kan använda denna VARRAY utanför dess block eller ens återanvända den och det är dess största nackdel. Så fortsätt och läs vidare för att ta reda på hur vi kan övervinna denna nackdel med VARRAY.

Denna nackdel kan lätt övervinnas om vi kan hitta ett sätt att skapa VARRAY utanför PL/SQL-blocket och lagra det permanent i schemat. Lyckligtvis kan vi uppnå båda målen genom att skapa VARRAY som ett databasobjekt. Det är precis vad vi ska lära oss i den här handledningen.

I den här handledningen kommer vi att lära oss –

  • Hur man skapar VARRAY som databasobjekt.
  • Hur man använder den varrayen.
  • Hur man infogar data i VARRAY.
  • Hur man hämtar data till (från) VARRAY
  • Hur man uppdaterar data för VARRAY.

Låt oss börja med det första steget.

Hur skapar man VARRAY som databasobjekt?

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

Ovanstående kod kommer vid framgångsrik exekvering att skapa en VARRAY med namnet dbObj_vry som kommer att ha storleksgränsen på 5 element och deras datatyp kommer att vara NUMBER. Denna VARRAY har bredare räckvidd och kan användas inte bara i PL/SQL-blocket utan även med andra schemaobjekt.

Hur använder man VARRAY skapat som databasobjekt?

Fördelen med att definiera VARRAY som databasobjekt är att det kan refereras från vilket program som helst som har tillstånd att använda det. Du kan använda VARRAY med tabeller, poster eller till och med med PL/SQL-block.

Låt oss göra exemplet:

Exempel 1. Hur definierar man en kolumn i en tabell med VARRAY?

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

I ovanstående kod skapade vi en tabell med namnet Kalender som har två kolumner day_name och day_date. Den första kolumnen kan innehålla data av VARCHAR2-datatypen medan den andra kolumnen kan innehålla data av en dbObj_vry-typ som är en VARRAY.

Information:Vad innebär det att definiera en kolumn i en tabell som VARRAY-typ?
Att definiera en kolumn i en tabell som VARRAY-typ innebär att den kan innehålla 'n' antal värden i den. Där 'n' är lika med storleksgränsen för den varrayen. I vårt fall är storleksgränsen för VARRAY 5, vilket betyder att kolumnen "Dagdatum" i tabellkalendern kan innehålla 5 värden.

Hur infogar man data i VARRAY?

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

Denna infoga DML-sats kommer att infoga en rad i kalendertabellen. Det är enkelt att infoga data i den första kolumnen "Dagsnamn" som är av varchar2-datatyp. Du behöver bara skriva önskad data och bifoga den i enstaka citattecken. Men samma sak är inte sant med den andra kolumnen "Dagdatum" som är av VARRAY-typ. För att infoga data i kolumnen som är av VARRAY-typ måste du först skriva namnet på varrayen och ange data.

Du måste också se till fyra saker

  1. Datan som du tillhandahåller måste vara innesluten i parentesen.
  2. Datatypen för data måste matcha datatypen för elementen i din VARRAY som i vårt fall är NUMBER.
  3. Antalet element som du infogar i kolumnen måste antingen vara mindre än eller lika med storleksgränsen för VARRAY. I vårt fall är det 5 och vi infogar 4 element i kolumnen vilket är helt ok. Men om jag antar att jag infogar 6 element i kolumnen kommer det att bli ett fel.
  4. Om du infogar flera data i VARRAY-kolumnen, se till att separera elementen från varandra med semikolon.

Hur hämtar man data från VARRAY?

Data kan hämtas med SELECT-satsen. Varje korrekt skriven SELECT-sats kommer att göra jobbet. Till exempel

SELECT * FROM calendar;

Detta kommer att hämta all data från tabellkalendern.

Om du vill visa data lagrade i kolumnen, som innehåller data av VARRAY-typ, i ett relationsformat kan du ta hjälp av TABLE-uttrycket. Till exempel

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

Denna SELECT-sats visar dig data från båda kolumnerna i ett relationsformat. TABLE-uttrycket kan öppna samlingsinstansen och representera objektraderna i relationsformat.

Hur uppdaterar man data för kolumnen av VARRAY-typ?

Att uppdatera värdena för VARRAY-kolumnen är ganska enkelt. Nedan exempel visar dig hur du uppdaterar värdena för dag_datum-kolumner.

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

Exempel 2. Hur använder man VARRAY med PL/SQL-block?

I exemplet ovan lärde vi oss hur man använder VARRAY som skapas som databasobjekt för att definiera kolumnen i en tabell. Nu ska vi se hur man använder samma varray i ett PL/SQL-block.

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

Du har sett det här exemplet i den senaste handledningen. Det finns inga så stora förändringar här förutom att den här gången istället för att definiera VARRAY inuti blocket skapade vi det som ett fristående databasobjekt. Jag föreslår att du tar en titt på den senaste handledningen där jag förklarade ovanstående kod i detalj.

Det är PL/SQL-handledningen om hur man skapar VARRAY som databasobjekt i Oracle. Hoppas du tyckte om att läsa, om så är fallet, se till att dela den här bloggen på din sociala sida med dina vänner. Tack och ha en bra dag!


  1. Inkludera saknade månader i grupp efter fråga

  2. MySQL Group By och Summa totalt värde för annan kolumn

  3. Django prefetch_related med limit

  4. Hur ansluter man mysql workbench till att köra mysql inuti docker?