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

Metodo di raccolta:procedura EXTEND nel database Oracle

Dopo il metodo di raccolta PL/SQL DELETE, la procedura EXTEND nel database Oracle è la seconda nell'elenco. Abbiamo utilizzato questa procedura più e più volte, ma non abbiamo mai avuto la possibilità di esplorarla in dettaglio. Così ho deciso di dedicare l'intero blog a questo metodo di raccolta. Quindi siediti e goditi il ​​blog.

Se non conosci PL/SQL e non sai cosa sono le Procedure, allora abbiamo un tutorial per te. Fai clic qui e scopri tutto sulle procedure PL/SQL in Oracle Database.

Che cos'è il metodo di raccolta PL/SQL EXTEND?

Simile a DELETE, il metodo di raccolta EXTEND è una procedura PL/SQL sovraccaricata che viene utilizzata per aggiungere elementi alla raccolta.

In quanti modi possiamo chiamare la procedura EXTEND in Oracle Database?

La procedura di raccolta PL/SQL è una procedura sovraccaricata. Pertanto, significa che chiamiamo questa stessa procedura in modi diversi. Questi diversi modi per chiamare la procedura di raccolta EXTEND sono –

  1. Estendi:Estendi la chiamata di procedura senza alcun argomento.

Chiamata alla procedura di raccolta PL/SQL Estendi senza alcun argomento aggiungerà un singolo elemento NULL alla collezione.

  1. Extend (n):Estendi la chiamata di procedura con un argomento.

Procedura di raccolta Estendi con un argomento aggiungerà il numero di elementi NULL che hai citato come argomento della procedura . Ma ricorda che l'argomento deve essere un valore intero valido.

  1. Extend (n, v):Estendi la chiamata di procedura con due argomenti.

In questo caso il primo argomento indica il numero di elementi che sarà aggiunto alla raccolta. Inoltre t Il secondo argomento è il numero di indice. Inoltre il suo valore verrà copiato e assegnato a ciascuno degli elementi appena aggiunti della collezione. Questa forma di ESTENSIONE è richiesta per le raccolte con "elementi non nulli".

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

No, il metodo di raccolta EXTEND può essere applicato solo alle tabelle nidificate e ai VARRAY di raccolta. Inoltre, EXTEND non può essere utilizzato con la raccolta di array associativi.

Puoi mostrarci le specifiche della procedura di ESTENSIONE del metodo di raccolta in Oracle Database?

Certo, perché no! Ecco le specifiche sovraccaricate del metodo di raccolta PL/SQL EXTEND —

EXTEND Procedura con un argomento:

PROCEDURE EXTEND (n pls_integer := 1);

Metodo di raccolta EXTEND con due argomenti:

PROCEDURE EXTEND (n pls_integer, v pls_integer);

Quando dovremmo usare il metodo di raccolta EXTEND nel nostro codice?

Quando hai una raccolta (tabella nidificata o VARRAY) nel tuo codice che non è inizializzato con un numero sufficiente di elementi. In tal caso è necessario prima utilizzare il metodo di raccolta PL/SQL EXTEND.

Qual ​​è il requisito del metodo di raccolta PL/SQL EXTEND?

Dichiarazione, definizione e inizializzazione sono i tre passaggi che dobbiamo seguire mentre lavoriamo con la raccolta in Oracle Database. Ma prima di archiviare i dati nell'indice, dobbiamo creare uno slot di memoria per esso. Di conseguenza, la procedura di raccolta PL/SQL EXTEND ci aiuta a creare quello slot di memoria per quei dati.

Cosa succede se abbiamo eliminato o tagliato la fine della raccolta?

In tal caso, il metodo di raccolta PL/SQL EXTEND salterà gli elementi eliminati quando assegna un nuovo indice.

Cosa succede se applico il metodo di raccolta EXTEND a una tabella nidificata non inizializzata o VARRAY?

Se il metodo di raccolta PL/SQL EXTEND viene applicato a una raccolta non inizializzata, verrà visualizzato un COLLECTION_IS_NULL eccezione.

E se provo ad ESTENDERE un VARRAY oltre il limite definito?

Se il metodo di raccolta EXTEND viene utilizzato con VARRAY per estenderlo oltre il limite definito, dovrai affrontare un'altra eccezione che è SUBSCRIPT_BEYOND_LIMIT.

Ehi, Manish! Vedremo mai un esempio di questo metodo di raccolta EXTEND?

Sì, faremo sicuramente la dimostrazione di ciascuna delle chiamate EXTEND della procedura di raccolta PL/SQL menzionate sopra. Oltre alla chiamata di procedura estesa con VARRAY.

1. Procedura di raccolta PL/SQL EXTEND senza argomento.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable();
BEGIN
    nt_obj.EXTEND;
    nt_obj(1) := 10;
    DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1));
END;
/

2. Procedura di raccolta EXTEND con un argomento.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable();
BEGIN
    nt_obj.EXTEND(3);
    nt_obj(1) := 10;
    nt_obj(2) := 20;
    nt_obj(3) := 30;
    DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1));
    DBMS_OUTPUT.PUT_LINE ('Data at index 2 is '||nt_obj(2)); 
    DBMS_OUTPUT.PUT_LINE ('Data at index 3 is '||nt_obj(3));
END;
/

3. Procedura di raccolta PL/SQL EXTEND con due argomenti.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable();
BEGIN
    nt_obj.EXTEND;
    nt_obj(1) := 28;
    DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1));
    nt_obj.EXTEND(5,1);
    DBMS_OUTPUT.PUT_LINE ('Data at index 4 is '||nt_obj(4));
END;
/

4. Procedura di raccolta EXTEND (nessun argomento) con VARRAY

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_Varray IS VARRAY (5) OF NUMBER;
    vry_obj my_Varray := my_Varray();
BEGIN
    vry_obj.EXTEND;
    vry_obj(1) := 10;
    DBMS_OUTPUT.PUT_LINE('Data at index 1 is '||vry_obj(1));
END;
/

Ogni LOC di tutto quanto sopra (tranne il 4) è spiegato in dettaglio nel Video Tutorial sul nostro canale YouTube.

Spero di aver discusso tutte le possibili domande sul metodo di raccolta PL/SQL EXTEND che potresti affrontare nel tuo esame di certificazione Oracle db e nella tua intervista. Inoltre, in caso di confusione sulle certificazioni, puoi fare riferimento alla nostra Guida all'esame di certificazione di Oracle Database.