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

Prohlášení FORALL s dolní a horní hranicí v databázi Oracle

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:

  1. Vytvořte tabulku.

Nejprve si vytvoříme tabulku. Tuto tabulku použijeme k výpisu dat, která budeme načítat z kolekce.

  1. 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.

  1. 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.


  1. Jak vytvořit uloženou proceduru vázanou na schéma na serveru SQL Server

  2. Chyba PostgreSQL:Vztah již existuje

  3. Skupiny dostupnosti SQL Server AlwaysOn:Instalace a konfigurace, část 2

  4. Pokus o export Oracle přes PL/SQL dává datum 0000-00-00