FORALL prohlášení s dolní a horní vázanou doložkou
V předchozím tutoriálu jsme se naučili, že existují tři vázané klauzule, které můžeme použít s příkazem FORALL k optimalizaci dotazů DML. Z těchto tří vázaných klauzulí prozkoumáme v tomto tutoriálu první, tj. dolní a horní hranici.
Co je klauzule dolní a horní hranice příkazu FORALL?
Jak název napovídá, pomocí klauzule Lower &Upper Bound musíme specifikovat platný rozsah po sobě jdoucích indexových čísel kolekce.
Existuje nějaké pravidlo pro použití klauzule Lower &Upper Bound s příkazem FORALL?
Klauzuli Lower &Upper Bound lze použít pouze v případě, že kolekce, na kterou odkazujete ve svém prohlášení DML, je hustá . Pokud je kolekce odkazů řídká, možná budete chtít použít jiné vázané klauzule, o kterých budeme diskutovat v budoucích tutoriálech.
Aby byl váš program úspěšně spuštěn, musíte se ujistit, že jste dodrželi všechna pravidla příkazu FORALL spolu s výše zmíněným pravidlem klauzule Lower &Upper bound. Další informace o prohlášení FORALL naleznete zde.
Udělejme si příklad příkazu FORALL s klauzulí Lower &Upper Bound v databázi Oracle.
Než však přejdeme na příklad, musíme pochopit jednu věc; Příkaz FORALL funguje stejně jako klauzule hromadného sběru, ale obráceným způsobem. Například u hromadného sběru jsme načítali data z tabulek a ukládali je do kolekce, ale nyní pomocí příkazu FORALL načteme data z kolekce a uložíme je do tabulky.
V této ukázce uděláme tři věci, abychom porozuměli konceptu příkazu FORALL s klauzulí Lower &Upper Bound. Tyto tři věci jsou:
-
Vytvořte tabulku.
Nejprve si vytvoříme tabulku. Tuto tabulku použijeme k výpisu dat, která budeme načítat z kolekce.
-
Vytvořte a naplňte sbírku.
Tento krok je volitelný, pokud již máte kolekci s nějakými daty. Pokud ne, následujte mě. Pro ukázku vytvořím a naplním sbírku.
-
Napište prohlášení FORALL.
Jakmile budete mít svůj stůl a sbírku připravenou, napište prohlášení FORALL. Pro demonstraci napíšu příkaz FORALL, který načte data z kolekce a uloží je do tabulky. To bude také ukázka příkazu FORALL s INSERT DML.
Udělejme příklad příkazu PL/SQL FORALL s dolní a horní hranicí.
SET SERVEROUTPUT ON; CREATE TABLE tut_77 ( Mul_tab NUMBER(5) );
To bude naše tabulka, která bude obsahovat data. Dále napíšeme blok PL/SQL.
DECLARE -- Declare the collection TYPE My_Array IS TABLE OF NUMBER INDEX BY PLS_INTEGER; col_var My_Array; --Declare a variable for holding the total number of records of the table tot_rec NUMBER; BEGIN --Populate the collection FOR i IN 1..10 LOOP col_var (i) := 9*i; END LOOP; -- Write the FORALL statement. FORALL idx IN 1..10 INSERT INTO tut_77 (mul_tab) VALUES (col_var (idx)); --Get the total number of records from the table SELECT count (*) INTO tot_rec FROM tut_77; DBMS_OUTPUT.PUT_LINE ('Total records inserted are '||tot_rec); END; /
Vysvětlení části prohlášení
V sekci prohlášení tohoto kódu jsme deklarovali Asociativní pole s názvem „my_Array“ spolu s jeho proměnnou kolekce. Také další proměnná s názvem tot_rec datového typu Number. Tato proměnná bude obsahovat celkový počet záznamů uložených v naší tabulce.
V sekci provádění jsme provedli tři úkoly. Za prvé, pomocí smyčky FOR jsme naplnili naši kolekci násobící tabulkou 9. Za druhé pomocí příkazu FORALL jsme vzali data z kolekce a uložili je do tabulky, kterou jsme vytvořili. Za třetí pomocí proměnné tot_rec s příkazem SELECT-INTO jsme zpětně zobrazili celkový počet řádků uložených v tabulce.
Udělal jsem také video na stejné téma, kde jsem podrobně vysvětlil výše uvedený kód řádek po řádku. Doporučuji vám to zkontrolovat.
Toto je výukový program o příkazu PL/SQL FORALL s klauzulí Lower &Upper Bound v databázi Oracle. Doufám, že se vám sledování líbilo. Ujistěte se, že dáte Like &Share tento blog se svými přáteli na vašich sociálních sítích. Můžete mě také kontaktovat na mé facebookové stránce.
Děkuji a přeji hezký den.