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

Metoda gromadzenia:funkcja LIMIT w bazie danych Oracle

Dzisiejszy samouczek dotyczący PL/SQL dotyczy metody zbierania danych LIMIT. Widzieliśmy już 4 funkcje w tej serii metod zbierania, które są – Count, Exists, First i Last. Limit to piąta funkcja, której będziemy się dzisiaj uczyć.

Co to jest metoda zbierania danych LIMIT?

Metoda gromadzenia danych LIMIT, która w rzeczywistości jest funkcją PL/SQL, zwraca maksymalną liczbę elementów, które może pomieścić VARRAY. Oznacza to, że korzystając z tej funkcji, możesz dowiedzieć się, ile elementów możesz przechowywać w VARRAY.

Co zwraca metoda odbioru LIMIT?

Metoda zbierania LIMIT zwraca wartość typu PLS_INTEGER?

Czy ta funkcja działa również z pozostałymi dwiema kolekcjami Tabele zagnieżdżone i Tablica asocjacyjna?

Metoda zbierania LIMIT działa tylko z VARRAY. Jeśli zostanie zastosowany do tabeli zagnieżdżonej lub tablicy asocjacyjnej, ta funkcja zwróci wartość NULL lub Brak. Odpowiedź brzmi:nie, funkcja zbierania LIMIT nie działa z tabelami zagnieżdżonymi i tablicami asocjacyjnymi.

Jaka jest specyfikacja funkcji zbierania LIMIT?

Specyfikacja funkcji zbierania LIMIT to:

FUNCTION LIMIT RETURN pls_integer;

Czy funkcja zbierania LIMIT zgłasza jakiś wyjątek? Jeśli tak, to kiedy?

Tak, funkcja LIMIT zgłasza wyjątek COLLECTION_IS_NULL, jeśli zostanie zastosowany do niezainicjowanej tabeli zagnieżdżonej lub VARRAY.

Czy możesz pokazać nam przykład użycia funkcji LIMIT?

Jasne, czemu nie. Oto bardzo prosty przykład pokazujący, jak prawidłowo używać funkcji zbierania LIMIT z wartościami VARRAY.

SET SERVEROUTPUT ON;
DECLARE
    TYPE inBlock_vry IS VARRAY (5) OF NUMBER;
    vry_obj inBlock_vry := inBlock_vry();
BEGIN
 --Let's find out total number of indexes in the above VARRAY
    DBMS_OUTPUT.PUT_LINE ('Total Indexes '||vry_obj.LIMIT);
END;
/

Czy nie mamy funkcji COUNT, która daje te same informacje?

Funkcja zbierania LIMIT zwraca całkowitą liczbę indeksów VARRAY niezależnie od tego, czy te indeksy są puste, czy zawierają jakieś dane . Sprawdza definicję VARRAY i widzi całkowitą liczbę elementów, które ma przechowywać, i zwraca tę liczbę.

Podczas gdy funkcja zbierania COUNT zwraca liczbę indeksów, które nie są puste i przechowywanie niektórych danych .

Spójrz na ten program PL/SQL. Pomoże Ci to lepiej zrozumieć różnicę między metodą zbierania COUNT i LIMIT.

SET SERVEROUTPUT ON;
DECLARE
    --Create VARRAY of 5 element
    TYPE inblock_vry IS
        VARRAY ( 5 ) OF NUMBER;
    vry_obj   inblock_vry := inblock_vry ();
BEGIN
    --Insert into VARRAY
    	vry_obj.extend;
    	vry_obj(1) := 10 * 2; 
dbms_output.put_line('Total Number of Index ' || vry_obj.limit);
dbms_output.put_line('Total Number of Index which are occupied ' || vry_obj.count);
END;
/

W powyższym kodzie mamy VARRAY, który jest w stanie pomieścić 5 elementów typu NUMBER. W sekcji wykonania mamy dwie instrukcje wyjściowe DBMS. Pierwsza instrukcja wyjściowa, która pokazuje wynik funkcji LIMIT, zwróci 5, ponieważ jest to całkowita siła naszej VARRAY, podczas gdy druga instrukcja wyjściowa zwróci 1, ponieważ wśród tych 5 indeksów jest tylko jeden indeks, w którym są zapisane pewne dane.

W filmie powiedziałeś, że pokażesz nam,jak sprawdzić łączną liczbę elementów, które nie zostały wykorzystane do przechowywania danych w varray przy użyciu metody zbierania LIMIT?

Czy tak jest? Czy to powiedziałem? Tylko żartuję.

Znalezienie liczby wolnych indeksów do wykorzystania w VARRAY jest bardzo łatwe. Powiem ci jak.

Jak powiedziałem powyżej, funkcja zbierania COUNT zwraca liczbę indeksów, w których są przechowywane dane, a funkcja zbierania LIMIT zwraca całkowitą liczbę indeksów, które może pomieścić VARRAY.

Jeśli odejmiesz wynik funkcji count od wyniku funkcji LIMIT, otrzymasz całkowitą liczbę elementów, które nie zostały użyte do przechowywania danych w varray. Na przykład

DECLARE
    --Create VARRAY of 5 element
    TYPE inblock_vry IS
        VARRAY ( 5 ) OF NUMBER;
    vry_obj   inblock_vry := inblock_vry ();
BEGIN
    --Insert into VARRAY
    vry_obj.extend;
    vry_obj(1) := 10 * 2;
    dbms_output.put_line('Total Number of Index ' || vry_obj.limit);
    dbms_output.put_line('Total Number of Index which are occupied ' || vry_obj.count);
    dbms_output.put_line('Total Number of Vacant index left for use '
                            || (vry_obj.limit - vry_obj.count) );
END;
/

To samouczek PL/SQL odpowiadający na wszystkie pytania, których można się spodziewać na egzaminie certyfikacyjnym, a także w rozmowie o metodzie zbierania danych LIMIT w bazie danych Oracle.

Czy jest coś, o czym zapomniałem omówić lub wspomnieć w tym samouczku? Jeśli tak, to proszę o pozwolenie. Napisz do mnie na moim Twitterze lub Facebooku.

Dzięki ż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. Jak mogę potwierdzić, że baza danych to Oracle i jakiej wersji używa SQL?

  2. HQL ma wartość null And !=null w kolumnie Oracle

  3. FROM_TZ() Funkcja w Oracle

  4. Co robi (+) w Oracle SQL?

  5. Wartości oddzielone przecinkami w Oracle