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

Kolekce PL/SQL:Vnořená tabulka v databázi Oracle

Jak vytvořit vnořenou tabulku uvnitř bloku PL/SQL

Vítejte u druhého tutoriálu ze série PL/SQL Collection. V tomto tutoriálu se naučíme první typ kolekce, která je „vnořená tabulka“. Tabulka uvnitř tabulky je nejjednodušší definice, se kterou lze přijít, a je ve všech směrech správná, protože tabulka, která je vnořená do jiné tabulky, je přesně to, co naznačuje název vnořená tabulka.

Pokud však musíme definovat kolekci ‚Vnořená tabulka‘ elegantnějším a techničtějším způsobem, můžeme říci, že vnořené tabulky jsou jednorozměrné struktury, které jsou trvalé a neomezené povahy. Jsou přístupné v SQL i PL/SQL a lze je použít v tabulkách, záznamech a definicích objektů. Protože se jedná o neomezenou kolekci PL/SQL, může obsahovat libovolný počet prvků v náhodně uspořádané sadě.

Definice
Vnořené tabulky jsou jednorozměrné struktury, které jsou trvalé a neomezené povahy. Jsou přístupné v SQL i PL/SQL a lze je použít v tabulkách, záznamech a definicích objektů. Protože se jedná o neomezenou kolekci PL/SQL, může obsahovat libovolný počet prvků v neuspořádané sadě.

Doporučená četba:Úvod do kolekce PL/SQL

Vnořená tabulka může být vytvořena uvnitř bloku PL/SQL nebo v databázi jako objekt typu kolekce (Schema Object). V případě předchozí vnořené tabulky se chová jako jednorozměrné pole bez jakéhokoli typu indexu nebo jakéhokoli horního limitu.

Prozatím se tedy soustřeďme na to, jak vytvořit vnořenou tabulku uvnitř bloku PL/SQL a zbytek si nechme na příští tutoriál.

Syntaxe pro vytváření vnořené tabulky

DECLRE 
TYPE nested_table_name IS TABLE OF element_type [NOT NULL];

Tuto syntaxi jsem podrobně vysvětlil ve svém video tutoriálu na mém kanálu YouTube. Vřele vám doporučuji, abyste si toto video přečetli.

Příklad:Jak vytvořit vnořenou tabulku uvnitř bloku PL/SQL?

Následující příklad je pouze pro demonstraci toho, jak vytvořit vnořenou tabulku, není na tom nic nápadného.

SET SERVEROUTPUT ON;
DECLARE
   TYPE my_nested_table   IS TABLE OF number;
    var_nt  my_nested_table :=  my_nested_table (9,18,27,36,45,54,63,72,81,90);
BEGIN
   DBMS_OUTPUT.PUT_LINE ('Value Stored at index 1 in NT is ' ||var_nt (1)); 
   DBMS_OUTPUT.PUT_LINE ('Value Stored at index 2 in NT is ' ||var_nt (2));
   DBMS_OUTPUT.PUT_LINE ('Value Stored at index 3 in NT is ' ||var_nt (3));
END;
 /

Výše uvedený příklad je velmi jednoduchý, ve kterém jsme vytvořili vnořenou tabulku a pojmenovali ji ‚moje_vnořená_tabulka‘ (řádek číslo 3). Na dalším řádku (řádek číslo 4) jsme vytvořili instanci stejné kolekce a použili ji k inicializaci vnořené tabulky a uložení některých dat do ní. V sekci provádění přistupujeme k uloženým datům individuálně pomocí indexového čísla, stejně jako jsme to dělali v polích.

Místo ručního přístupu k datům pomocí indexu můžeme použít smyčky a procházet každý prvek vnořené tabulky kolekce.

 SET SERVEROUTPUT ON;
 DECLARE
   TYPE my_nested_table   IS TABLE OF number;
   var_nt  my_nested_table :=  my_nested_table (9,18,27,36,45,54,63,72,81,90);
 BEGIN
   FOR i IN 1..var_nt.COUNT
   LOOP
     DBMS_OUTPUT.PUT_LINE ('Value stored at index '||i||'is '||var_nt(i));
   END LOOP;
 END;
 /

To je další příklad toho, jak vytvořit vnořenou tabulku, ve které procházíme daty a zobrazujeme je zpět uživateli pomocí For Loop.

To je vše o tom, jak vytvořit vnořené tabulky v blocích PL/SQL. Zůstaňte naladěni, protože v dalším tutoriálu se naučíme, jak vytvářet vnořené tabulky jako objekty kolekce databáze a jaké všechny pohledy datového slovníku můžete použít k získání informací o vnořených tabulkách, které jsou uloženy ve vaší databázi.

To je vše. Děkuji za přečtení a přeji hezký den!


  1. SQL:BETWEEN vs <=a>=

  2. SQL Server:Temná stránka NVARCHAR

  3. Složitosti NULL – 2. část

  4. Průvodce návrhem databáze pro správu blogů v MySQL