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

Metoda zbierania:procedura przycinania w bazie danych Oracle

Witamy z powrotem w ostatnim samouczku z serii PL/SQL Collection. Najdłuższa jak dotąd seria samouczków wideo na kanale. W tym samouczku dowiemy się o ostatniej procedurze kolekcji PL/SQL, którą jest procedura TRIM w bazie danych Oracle.

Co to jest metoda zbierania danych PL/SQL TRIM?

Metoda zbierania TRIM w bazie danych Oracle to przeciążona procedura, za pomocą której można usunąć jeden lub więcej elementów z końca kolekcji.

Na ile sposobów możemy wywołać procedurę TRIM metody zbierania w bazie danych Oracle?

Ponieważ metoda zbierania danych PL/SQL TRIM jest procedurą przeciążoną, możemy ją wywołać na dwa różne sposoby. Te dwa różne wywołania procedury TRIM to:

  1. TRIM:Procedura przycinania bez parametrów.

Jeśli użyjemy procedury TRIM bez żadnych parametrów, usunie ona tylko jeden element z końca kolekcji.

  1. TRIM:Procedura przycinania z jednym parametrem.

Procedura TRIM wywołana przez przekazanie jednego argumentu usunie liczbę elementów z końca kolekcji określoną przez parametr. Ten parametr musi być prawidłową liczbą całkowitą. Ponadto nie powinna być większa niż maksymalna liczba elementów, które posiada Twoja kolekcja.

Informacja:procedura przycinania zgłosi błąd w przypadku próby przycięcia przestrzeni poniżej zera elementów.

Czy możemy użyć metody zbierania PL/SQL TRIM ze wszystkimi trzema typami kolekcji?

Niestety nie, nie możemy. Podobnie jak w przypadku procedury zbierania PL/SQL EXTEND, procedura TRIM może być używana tylko z kolekcjami zagnieżdżonymi tabelami i tablicami VARRAY. Nie możemy go jednak używać z tablicami asocjacyjnymi.

Co się stanie, jeśli użyjemy procedury zbierania PL/SQL TRIM z tablicą asocjacyjną?

Jeśli metoda zbierania Trim wersji Oracle Database jest używana z tablicą asocjacyjną, wystąpi błąd czasu kompilacji .

Jaka jest specyfikacja procedury przycinania w bazie danych Oracle?

Specyfikacja procedury windykacyjnej TRIM to:

PROCEDURE TRIM (n PLS_INTEGER:= 1);

Jeśli n jest NULL, to przycięcie nic nie da.

Słyszałem, jak mówisz w film, w którym możemy również uzyskać wyjątek SUBSCRIPT_BEYOND_COUNT?

Tak, metoda zbierania PL/SQL TRIM zgłosi wyjątek SUBSCRIPT_BEYOND_COUNT. Jeśli podjęto próbę przycięcia większej liczby elementów niż faktycznie istnieje w kolekcji.

Możesz znaleźć przykład tego wyjątku, który zademonstrowałem w filmie w dalszej części tego bloga. Jeśli chcesz obejrzeć wideo, oto jest. Jeśli nie, przewiń w dół.

Czy są jakieś inne wyjątki związane z metodą Trim PL/SQL Collection, o których powinniśmy wiedzieć?

Tak, jest jeszcze jeden wyjątek związany z procedurą TRIM i jest to wyjątek COLLECTION_IS_NULL.

Za każdym razem, gdy zastosujesz procedurę zbierania TRIM do niezainicjowanej tabeli zagnieżdżonej lub VARRAY, kompilator zgłosi wyjątek COLLECTION_IS_NULL.

Czy możemy razem użyć procedury TRIM i DELETE?

Nie, nie możemy jednocześnie stosować procedury TRIM i DELETE kolekcji. Używanie ich ze sobą przyniesie nieoczekiwane rezultaty.

Pomyśl o scenariuszu, w którym usunięto element znajdujący się na końcu zmiennej VARRAY, a następnie zastosujesz na nim procedurę TRIM. Czy potrafisz odgadnąć liczbę elementów, które mogłeś usunąć? Możesz być zdezorientowany, myśląc, że dwa elementy zostały usunięte, jednak faktem jest, że tylko jeden został usunięty. TRIM działa na symbol zastępczy pozostawiony przez procedurę DELETE.

Aby uniknąć tych mylących i denerwujących wyników, obsługa bazy danych Oracle zdecydowanie zaleca, aby te dwie procedury były używane wyłącznie w danej kolekcji.

A co z przykładami? Czy robimy je na tym blogu, czy nie?

Jasne, na pewno zrobimy przykłady na tym blogu. W rzeczywistości miałem zamiar pokazać wam demonstrację każdego wywołania TRIM procedury kolekcji PL/SQL, o której wspomnieliśmy powyżej. Zaczynamy:

1. Procedura zbierania PL/SQL TRIM bez parametrów.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable(1,2,3,4,5);
BEGIN
    nt_obj.TRIM;
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..nt_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (nt_obj (i));
    END LOOP;
END;
/ 

2. Procedura zbierania TRIM z parametrem.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable(1,2,3,4,5);
BEGIN
    nt_obj.TRIM (3);
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..nt_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (nt_obj(i));
    END LOOP;
END;
/

3. Procedura zbierania PL/SQL TRIM SUBSCRIPT_BEYOND_COUNT wyjątek.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable(1,2,3,4,5);
BEGIN
    nt_obj.TRIM(6);
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..nt_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (nt_obj(i));
    END LOOP;
END;
/

Wyjątek SUBSCRIPT_BEYOND_COUNT występuje, gdy przekazujemy argument większy niż łączna liczba elementów kolekcji. W powyższym przykładzie kolekcja, której używamy, to zagnieżdżona tabela o nazwie „moja_zagnieżdżona tabela”, w której zapisanych jest 5 elementów numerycznych. Jednak w wywołaniu procedury poinstruowaliśmy kompilator, aby TRIM 6 elementów, co jest zdecydowanie niemożliwe, dlatego w tym przypadku kompilator zgłasza wyjątek SUBSCRIPT_BEYOND_COUNT.

4. Procedura odbioru TRIM z VARRAY.

SET SERVEROUTPUT ON;
DECLARE
 TYPE inBlock_vry IS VARRAY (5) OF NUMBER;
 vry_obj inBlock_vry := inBlock_vry(1, 2, 3, 4, 5);
BEGIN
    --TRIM without parameter
    vry_obj.TRIM;
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..vry_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (vry_obj(i));
    END LOOP;
    --TRIM with Parameter
    vry_obj.TRIM (2);
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..vry_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (vry_obj(i));
    END LOOP;
END;
/

To jest samouczek wyjaśniający koncepcje procedury PL/SQL Collection Method TRIM w Oracle Database.

Mam nadzieje ze ci się podobało. Skontaktuj się ze mną na mojej stronie na Facebooku, aby uzyskać więcej aktualizacji i wglądu w koncepcje Oracle Database. Dzięki 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. Importowanie plików w Oracle Apex za pomocą wwv_flow_files

  2. Jak znaleźć nazwę wiązania w Oracle?

  3. Jak włączyć tryb dziennika archiwizacji w Oracle Database 19c?

  4. Oracle Joins — porównanie składni konwencjonalnej VS ANSI Składnia

  5. Korzyści z nauki nowych systemów DB