Oracle
 sql >> Database >  >> RDS >> Oracle

Metodo di raccolta:procedura di ritaglio nel database Oracle

Bentornati all'ultimo tutorial della serie PL/SQL Collection. La serie di video tutorial più lunga finora sul canale. In questo tutorial impareremo l'ultima procedura di raccolta PL/SQL che è la procedura TRIM in Oracle Database.

Cos'è il metodo di raccolta PL/SQL TRIM?

Il metodo di raccolta TRIM in Oracle db è una procedura sovraccaricata che consente di rimuovere uno o più elementi dalla fine di una raccolta.

In quanti modi possiamo chiamare la procedura TRIM del metodo di raccolta in Oracle Database?

Poiché il metodo di raccolta PL/SQL, TRIM è una procedura sovraccaricata, possiamo chiamarla in due modi diversi. Questi due diversi bandi di procedura TRIM sono:

  1. TRIM:procedura di taglio senza parametro.

Se utilizziamo la procedura TRIM senza alcun parametro, rimuoverà solo un elemento dalla fine della raccolta.

  1. TRIM:procedura di taglio con un parametro.

La procedura TRIM chiamata passando un argomento rimuoverà il numero di elementi dalla fine della raccolta come specificato dal parametro. Quel parametro deve essere un numero intero valido. Inoltre non dovrebbe essere maggiore del numero massimo di elementi che ha la tua collezione.

Informazioni:la procedura di ritaglio genererà un errore se si tenta di tagliare lo spazio al di sotto di zero elementi.

Possiamo utilizzare il metodo di raccolta PL/SQL TRIM con tutti e tre i tipi di raccolte?

Purtroppo no, non possiamo. Simile alla procedura di raccolta PL/SQL EXTEND, la procedura TRIM può essere utilizzata solo con tabelle nidificate e VARRAY di raccolta. Tuttavia non possiamo usarlo con array associativi.

Cosa accadrà se utilizziamo TRIM della procedura di raccolta PL/SQL con un array associativo?

Se il metodo di raccolta Trim delle versioni di Oracle Database viene utilizzato con un array associativo, si riceverà un errore in fase di compilazione .

Qual ​​è la specifica di Trim Procedure in Oracle Database?

La specifica della procedura di raccolta TRIM è:

PROCEDURE TRIM (n PLS_INTEGER:= 1);

Se n è NULL, trim non farà nulla.

Ti ho sentito dire in il video che possiamo anche ottenere SUBSCRIPT_BEYOND_COUNT eccezione?

Sì, il metodo di raccolta PL/SQL TRIM genererà l'eccezione SUBSCRIPT_BEYOND_COUNT. Se si tenta di ritagliare più elementi di quanti ne esistano effettivamente nella raccolta.

Puoi trovare l'esempio di questa eccezione che ho dimostrato nel video più avanti in questo blog. Se vuoi vedere il video, eccolo qui. In caso contrario, sentiti libero di scorrere verso il basso.

Ci sono altre eccezioni associate al metodo di raccolta PL/SQL Trim di cui dovremmo essere a conoscenza?

Sì, c'è un'altra eccezione associata alla procedura TRIM ed è l'eccezione COLLECTION_IS_NULL.

Ogni volta che applichi la procedura di raccolta TRIM a una tabella nidificata o VARRAY non inizializzata, il compilatore solleverà l'eccezione COLLECTION_IS_NULL.

Possiamo utilizzare la procedura TRIM e DELETE insieme?

No, non è possibile utilizzare insieme le procedure TRIM e DELETE delle raccolte. Usarli insieme produrrà risultati inaspettati.

Pensa ad uno scenario in cui hai CANCELLATO un elemento situato alla fine di una variabile VARRAY e successivamente applichi la procedura TRIM sulla stessa. Riesci a indovinare il numero di elementi che potresti aver rimosso? Potresti essere confuso nel credere che due elementi siano stati rimossi, tuttavia il fatto è che solo uno è stato rimosso. TRIM agisce sul segnaposto lasciato dalla procedura DELETE.

Per evitare questi risultati confusi e snervanti, il supporto del database Oracle consiglia vivamente di utilizzare queste due procedure esclusivamente su una determinata raccolta.

E gli esempi? Li stiamo facendo in questo blog o no?

Certo, faremo sicuramente gli esempi in questo blog. In effetti stavo per mostrarti la dimostrazione di ciascuna delle chiamate TRIM della procedura di raccolta PL/SQL che abbiamo menzionato sopra. Eccoci:

1. Procedura di raccolta PL/SQL TRIM senza parametro.

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 di raccolta TRIM con parametro.

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 di raccolta PL/SQL TRIM SUBSCRIPT_BEYOND_COUNT eccezione.

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;
/

SUBSCRIPT_BEYOND_COUNT eccezione si verifica quando si passa un argomento maggiore del numero totale di elementi della raccolta. Nell'esempio precedente la raccolta che utilizziamo è Nested table con il nome "my_nestedTable" che contiene 5 elementi numerici memorizzati. Tuttavia nella chiamata alla procedura abbiamo indicato al compilatore di TRIM 6 elementi, il che è decisamente impossibile, quindi in questo caso il compilatore solleva un'eccezione SUBSCRIPT_BEYOND_COUNT.

4. Procedura di ritiro TRIM con 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;
/

Questo è il tutorial che spiega i concetti della procedura TRIM del metodo di raccolta PL/SQL in Oracle Database.

Spero ti sia piaciuto. Connettiti con me sulla mia Pagina Facebook per ulteriori aggiornamenti e approfondimenti sui concetti di Oracle Database. Grazie e buona giornata!