sql >> Databáze >  >> RDS >> Oracle

Jak vytvořit VARRAY jako databázový objekt v databázi Oracle

Rozsah VARRAY, který je vytvořen jako člen PL/SQL bloku, je omezený na blok, ve kterém je vytvořen, to znamená, že tento VARRAY nemůžeme použít mimo jeho blok nebo dokonce znovu použít a to je jeho největší nevýhoda. Takže pokračujte a čtěte dále, abyste zjistili, jak můžeme překonat tuto nevýhodu VARRAY.

Tento nedostatek lze snadno překonat, pokud najdeme způsob, jak vytvořit VARRAY mimo blok PL/SQL a uložit jej trvale do schématu. Naštěstí můžeme dosáhnout obou cílů vytvořením VARRAY jako databázového objektu. To je přesně to, co se naučíme v tomto tutoriálu.

V tomto tutoriálu se naučíme –

  • Jak vytvořit VARRAY jako databázový objekt.
  • Jak používat tento varray.
  • Jak vložit data do VARRAY.
  • Jak načíst data do (z) VARRAY
  • Jak aktualizovat data VARRAY.

Začněme prvním krokem.

Jak vytvořit VARRAY jako databázový objekt?

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

Výše uvedený kód při úspěšném provedení vytvoří VARRAY s názvem dbObj_vry, který bude mít limit velikosti 5 prvků a jejich datový typ bude NUMBER. Tento VARRAY má širší rozsah a lze jej použít nejen uvnitř bloku PL/SQL, ale také s jinými objekty schématu.

Jak používat VARRAY vytvořený jako databázový objekt?

Výhodou definice VARRAY jako databázového objektu je, že na něj lze odkazovat z libovolného programu, který má oprávnění jej používat. VARRAY můžete použít s tabulkami, záznamy nebo dokonce s PL/SQL bloky.

Udělejme příklad:

Příklad 1. Jak definovat sloupec tabulky pomocí VARRAY?

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

Ve výše uvedeném kódu jsme vytvořili tabulku s názvem Calendar, která má dva sloupce day_name a day_date. První sloupec může obsahovat data datového typu VARCHAR2, zatímco druhý sloupec může obsahovat data typu dbObj_vry, což je VARRAY.

Informace:Co znamená definování sloupce tabulky jako typu VARRAY?
Definování sloupce tabulky jako typu VARRAY znamená, že v něm může být uložen počet „n“ hodnot. Kde „n“ se rovná limitu velikosti tohoto varray. V našem případě je limit velikosti VARRAY 5, což znamená, že sloupec 'Day Date' tabulky Kalendář může obsahovat 5 hodnot.

Jak vložit data do VARRAY?

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

Tento příkaz vložit DML vloží řádek do tabulky Kalendář. Vkládání dat do prvního sloupce „Název dne“, který má datový typ varchar2, je snadné. Stačí napsat požadovaná data a uzavřít je do jednoduchých uvozovek. Totéž však neplatí pro druhý sloupec „Day Date“, který je typu VARRAY. Abyste mohli vložit data do sloupce, který je typu VARRAY, musíte nejprve napsat název varray a dodat data.

Také se musíte ujistit o čtyřech věcech

  1. Údaje, které dodáváte, musí být uzavřeny v závorkách.
  2. Datový typ dat se musí shodovat s datovým typem prvků vašeho VARRAY, což je v našem případě NUMBER.
  3. Počet prvků, které vkládáte do sloupce, musí být menší nebo roven limitu velikosti VARRAY. V našem případě je to 5 a do sloupce vkládáme 4 prvky, což je zcela v pořádku. Ale pokud předpokládejme, že do sloupce vložím 6 prvků, dojde k chybě.
  4. Pokud do sloupce VARRAY vkládáte více dat, ujistěte se, že jsou prvky od sebe odděleny středníkem.

Jak načíst data z VARRAY?

Data lze načíst pomocí příkazu SELECT. Každý správně napsaný příkaz SELECT udělá svou práci. Například

SELECT * FROM calendar;

Tím se načtou všechna data ze stolního kalendáře.

V případě, že chcete zobrazit data uložená ve sloupci, který obsahuje data typu VARRAY, v relačním formátu, můžete si pomoci výrazu TABLE. Například

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

Tento příkaz SELECT vám zobrazí data z obou sloupců v relačním formátu. Výraz TABLE může otevřít instanci kolekce a reprezentovat řádky objektů v relačním formátu.

Jak aktualizovat data sloupce typu VARRAY?

Aktualizace hodnot sloupce typu VARRAY je velmi jednoduchá. Níže uvedený příklad vám ukáže, jak aktualizovat hodnoty ve sloupcích day_date.

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

Příklad 2. Jak používat VARRAY s PL/SQL blokem?

Ve výše uvedeném příkladu jsme se naučili, jak používat VARRAY, který je vytvořen jako objekt databáze, k definování sloupce tabulky. Nyní uvidíme, jak použít stejný varray uvnitř bloku PL/SQL.

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

Tento příklad jste viděli v minulém tutoriálu. Nejsou zde žádné tak velké změny, kromě toho, že tentokrát místo definování VARRAY uvnitř bloku jsme jej vytvořili jako samostatný databázový objekt. Navrhuji, abyste se podívali na poslední tutoriál, kde jsem podrobně vysvětlil výše uvedený kód.

To je výukový program PL/SQL o tom, jak vytvořit VARRAY jako objekt databáze v Oracle. Doufám, že se vám čtení líbilo, pokud ano, pak nezapomeňte sdílet tento blog na svých sociálních sítích se svými přáteli. Děkuji a přeji hezký den!


  1. Co znamená Chyba importu:Symbol nenalezen:_PQencryptPasswordConn znamená a jak to mohu opravit?

  2. SELECT DISTINCT na jednom sloupci

  3. Jak přimět Oracle vytvořit příkaz tabulky v SQL*Plus

  4. Funkce NLS_LOWER() v Oracle