Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oświadczenie FORALL z dolną i górną granicą w bazie danych Oracle

Oświadczenie FORALL z klauzulą ​​dolnej i górnej granicy

W poprzednim samouczku dowiedzieliśmy się, że istnieją trzy klauzule powiązane, których możemy użyć z instrukcją FORALL do optymalizacji zapytań DML. Z tych trzech klauzul związanych omówimy pierwszą z nich, tj. Dolną i Górną granicę w tym samouczku.

Co to jest klauzula Lower &Upper Bound w oświadczeniu FORALL?

Jak sama nazwa wskazuje, w klauzuli Lower &Upper Bound musimy określić poprawny zakres kolejnych numerów indeksu kolekcji.

Czy istnieje jakaś zasada używania klauzuli Lower &Upper Bound z instrukcją FORALL?

Klauzula Lower &Upper Bound może być używana tylko wtedy, gdy kolekcja, do której odwołujesz się w wyciągu DML, jest Gęsta . Jeśli kolekcja odniesień jest rzadka, możesz użyć innych powiązanych klauzul, które omówimy w przyszłych samouczkach.

Aby Twój program został pomyślnie wykonany, musisz upewnić się, że postępowałeś zgodnie ze wszystkimi zasadami instrukcji FORALL wraz z wyżej wspomnianą zasadą klauzuli Lower &Upper bound. Dowiedz się więcej o oświadczeniu FORALL tutaj.

Zróbmy przykład instrukcji FORALL z klauzulą ​​Lower &Upper Bound w bazie danych Oracle.

Ale zanim wskoczymy na przykład, musimy zrozumieć jedną rzecz; Oświadczenie FORALL działa tak samo jak klauzula zbiorczego zbierania, ale w odwrotny sposób. Na przykład przy zbieraniu zbiorczym pobieraliśmy dane z tabel i zapisywaliśmy je w kolekcji, ale teraz za pomocą instrukcji FORALL będziemy pobierać dane z kolekcji i przechowywać je w tabeli.

W tej demonstracji zrobimy trzy rzeczy, aby zrozumieć koncepcję wyrażenia FORALL z klauzulą ​​Lower &Upper Bound. Te trzy rzeczy to:

  1. Utwórz tabelę.

Najpierw stworzymy tabelę. Użyjemy tej tabeli do zrzucenia danych, które będziemy pobierać z kolekcji.

  1. Utwórz i wypełnij kolekcję.

Ten krok jest opcjonalny, jeśli masz już kolekcję z pewnymi danymi. Jeśli nie, to podążaj za mną. Na potrzeby demonstracji stworzę i zapełnię kolekcję.

  1. Napisz oświadczenie FORALL.

Po przygotowaniu stołu i kolekcji napisz oświadczenie FORALL. Na potrzeby demonstracji napiszę oświadczenie FORALL, które pobierze dane z kolekcji i zapisze je w tabeli. Będzie to również demonstracja instrukcji FORALL z INSERT DML.

Zróbmy przykład instrukcji PL/SQL FORALL z dolną i górną granicą.

SET SERVEROUTPUT ON;
CREATE TABLE tut_77 (
    Mul_tab    NUMBER(5)
);

To będzie nasza tabela, w której będą przechowywane dane. Następnie napiszemy 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;
/

Wyjaśnienie sekcji deklaracji

W sekcji deklaracji tego kodu zadeklarowaliśmy tablicę asocjacyjną o nazwie „moja_tablica” wraz z jej zmienną kolekcji. Również dodatkowa zmienna o nazwie tot_rec typu danych Number. Ta zmienna będzie przechowywać całkowitą liczbę rekordów przechowywanych w naszej tabeli.

W dziale realizacji wykonaliśmy trzy zadania. Po pierwsze, za pomocą pętli FOR wypełniliśmy naszą kolekcję tablicą mnożenia liczby 9. Po drugie, korzystając z instrukcji FORALL, pobraliśmy dane z kolekcji i zapisaliśmy je w utworzonej przez nas tabeli. Po trzecie, używając zmiennej tot_rec z instrukcją SELECT-INTO, wyświetliliśmy całkowitą liczbę wierszy przechowywanych w tabeli.

Zrobiłem również film na ten sam temat, w którym szczegółowo wyjaśniłem powyższy kod wiersz po wierszu. Proponuję to sprawdzić.

To jest samouczek dotyczący instrukcji PL/SQL FORALL z klauzulą ​​Lower &Upper Bound w bazie danych Oracle. Mam nadzieję, że podobało Ci się oglądanie. Upewnij się, że polubisz i udostępnisz tego bloga znajomym w mediach społecznościowych. Możesz również skontaktować się ze mną na mojej stronie na Facebooku.

Dziękuję i życzę miłego dnia.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy istnieje odpowiednik Oracle SQL Server's OUTPUT INSERTED.*?

  2. Jak wyświetlić rozmiar schematu Oracle za pomocą zapytania SQL?

  3. Zrozumienie wyników Execute Explain Plan w Oracle SQL Developer

  4. Wywołanie niezdefiniowanej funkcji oci_connect, php_oci8_12c.dll, windows 8.1, php5.6.6

  5. Zwiększ wydajność dzięki zbiorczemu odbiorowi w Oracle