Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Método de coleta:procedimento EXTEND no banco de dados Oracle


Após o método de coleta PL/SQL DELETE, o procedimento EXTEND no banco de dados Oracle é o segundo da lista. Usamos esse procedimento várias vezes, mas nunca tivemos a chance de explorá-lo em detalhes. Assim, decidi dedicar todo o blog a este método de Coleta. Então sente-se e aproveite o blog.

Se você é novo em PL/SQL e não sabe o que são Procedimentos, temos um tutorial para você. Clique aqui e saiba tudo sobre procedimentos PL/SQL no Banco de Dados Oracle.

O que é o método de coleta PL/SQL EXTEND?


Semelhante a DELETE, o método de coleção EXTEND é um procedimento PL/SQL sobrecarregado que é usado para anexar elementos à coleção.

De quantas maneiras podemos chamar o procedimento EXTEND no Oracle Database?


O Procedimento de Coleta PL/SQL é um procedimento sobrecarregado. Portanto, isso significa que chamamos esse mesmo procedimento de maneiras diferentes. Essas diferentes maneiras de chamar o Procedimento de Coleta EXTEND são –
  1. Extend:Estende a chamada do procedimento sem nenhum argumento.

Chamando o procedimento de coleção PL/SQL Estender sem nenhum argumento anexará um único elemento NULL à coleção.
  1. Extend (n):Estende a chamada do procedimento com um argumento.

Procedimento de coleção Estender com um argumento anexará o número de elementos NULL que você mencionou como o argumento do procedimento . Mas lembre-se de que o argumento deve ser um valor inteiro válido.
  1. Estender (n, v):estende a chamada do procedimento com dois argumentos.

Neste caso, o primeiro argumento indica o número de elementos que será anexado à coleção. Além disso t o segundo argumento é o número do índice. Além disso, seu valor será copiado e atribuído a cada um dos elementos recém-anexados da coleção. Esta forma de EXTEND é necessária para coleções com “elementos não nulos”.

Podemos usar o método de coleção PL/SQL EXTEND com todos os três tipos de coleções?


Não, o método de coleção EXTEND só pode ser aplicado a tabelas aninhadas e VARRAYs de coleção. Além disso, EXTEND não pode ser usado com arrays associativos de coleção.

Você pode nos mostrar a especificação do procedimento EXTEND do Método de Coleta no Banco de Dados Oracle?


Claro, por que não! Aqui estão as especificações sobrecarregadas do Método de Coleta PL/SQL EXTEND —

EXTEND Procedimento com um argumento:

PROCEDURE EXTEND (n pls_integer := 1);

Método de coleta EXTEND com dois argumentos:

PROCEDURE EXTEND (n pls_integer, v pls_integer);

Quando devemos usar o método de coleta EXTEND em nosso código?


Quando você tem uma coleção (tabela aninhada ou VARRAY) em seu código que não é inicializada com número suficiente de elementos. Nesse caso, você deve primeiro usar o método de coleta PL/SQL EXTEND.

Qual ​​é o requisito do método de coleta PL/SQL EXTEND?


Declarar, Definir e Inicializar são as três etapas pelas quais temos que passar enquanto trabalhamos com coleta no Banco de Dados Oracle. Mas antes de armazenar os dados no índice, precisamos criar um slot de memória para ele. Consequentemente, o procedimento de coleção PL/SQL EXTEND nos ajuda a criar esse slot de memória para esses dados.

E se tivermos excluído ou cortado o final da coleção?


Nesse caso, o método de coleção PL/SQL EXTEND ignorará os elementos excluídos quando atribuir um novo índice.

E se eu aplicar o método de coleção EXTEND a uma tabela aninhada não inicializada ou VARRAY?


Se o método de coleção PL/SQL EXTEND for aplicado a uma coleção não inicializada, ele mostrará um COLLECTION_IS_NULL exceção.

E se eu tentar ESTENDER um VARRAY além do limite definido?


Se o método de coleta EXTEND for usado com VARRAY para estendê-lo além do limite definido, você terá que enfrentar outra exceção que é SUBSCRIPT_BEYOND_LIMIT.

Ei, Manish! Veremos um exemplo desse método de coleta EXTEND?


Sim, com certeza faremos a demonstração de cada uma das chamadas EXTEND do procedimento PL/SQL Collection que mencionamos acima. Além da chamada de procedimento estendido com VARRAY.

1. Procedimento de coleta PL/SQL EXTEND sem argumento.

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. Procedimento de coleta EXTEND com um argumento.

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. Procedimento de coleção PL/SQL EXTEND com dois argumentos.

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. Procedimento de coleta EXTEND (sem argumento) com 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;
/

Cada LOC de todos os itens acima (exceto o 4) é explicado em detalhes no Tutorial em Vídeo em nosso canal do YouTube.

Espero que tenhamos discutido todas as possíveis perguntas sobre o método de coleta PL/SQL EXTEND que você pode enfrentar em seu exame de certificação Oracle db, bem como em sua entrevista. Além disso, se você tiver alguma dúvida sobre Certificações, consulte nosso Guia do Exame de Certificação de Banco de Dados Oracle.