Procedimento DELETE no banco de dados Oracle
Conforme discutido na Introdução aos métodos de coleta, temos sete funções de coleta e 3 procedimentos de coleta. Portanto, no total, temos 10 métodos de coleta entre os quais já discutimos 7 funções de coleta até agora. Assim, hoje neste tutorial vamos discutir o primeiro procedimento de coleta PL/SQL que é o procedimento DELETE no Banco de Dados Oracle.
O que é o método de coleta PL/SQL Excluir?
O método de coleção DELETE é um procedimento sobrecarregado que remove elementos da coleção.
O que você quer dizer com um procedimento sobrecarregado?
Você ouviu direito. O método de coleta PL/SQL DELETE é um procedimento sobrecarregado. O que significa que você pode usar o mesmo procedimento de três maneiras diferentes . Essas três maneiras diferentes são –
- EXCLUIR :Chamada de procedimento simples sem nenhum parâmetro. Assim, se o procedimento de coleção PL/SQL DELETE for usado sem nenhum parâmetro, ele removerá todos os elementos da coleção .
- EXCLUIR (número-índice ) :Chamada de procedimento com um único parâmetro. Este parâmetro único é o número de índice válido da coleção. O procedimento de coleta DELETE chamado passando um número de índice válido removerá o elemento do índice específico .
- EXCLUIR (índice inicial, índice final ) : Chamada de procedimento com dois parâmetros. Essa forma de chamar um procedimento DELETE é chamada de exclusão de intervalo . Desta forma, você deve especificar dois índices. E o procedimento exclui o intervalo de elementos que estão entre o índice inicial e o índice final .
Se a coleção for um array associativo indexado por string, o índice inicial e o índice final são string; caso contrário, os índices iniciais e finais são inteiros.
Podemos usar o procedimento DELETE no banco de dados Oracle com todas as coleções?
Sim, o método de coleta DELETE pode ser usado para todos os três tipos de coletas. Estes são – tabela aninhada, VARRAYs e arrays associativos.
Espere! Mas se usarmos o procedimento DELETE com VARRAYs, ele não fará uma coleção esparsa?
Como VARRAY não é uma coleção esparsa, portanto, não podemos excluir linhas individuais dela. Além disso, a única chamada de procedimento que podemos executar com VARRAY é a primeira. Que é o método de coleção DELETE sem nenhum argumento que remove todos os elementos da coleção. A única maneira de remover uma linha individual de um VARRAY é aparando-a de seu final usando outra chamada de procedimento TRIM.
Podemos esperar alguma exceção com o método de coleta DELETE?
Sim, há uma exceção associada ao método de coleta PL/SQL DELETE. Se o procedimento DELETE for aplicado a uma tabela aninhada não inicializada e VARRAY, ele gerará uma exceção “Collection_is_Null”.
Exemplos do método de coleta PL/SQL DELETE.
Vamos ver alguns exemplos de cada uma das chamadas Procedure DELETE mencionadas acima.
Exemplo 1:chamada de procedimento simples sem argumento.
DECLARE TYPE my_nested_table IS TABLE OF NUMBER; var_nt my_nested_table := my_nested_table(2,4,6,8,10,12,14,16,18,20); BEGIN --Range Delete var_nt.DELETE; FOR i IN 1..var_nt.LAST LOOP IF var_nt.EXISTS(i) THEN DBMS_OUTPUT.PUT_LINE('Value at Index ['||i||'] is '|| var_nt(i)); END IF; END LOOP; END; /
Chamar o procedimento de coleção DELETE sem nenhum argumento excluirá todos os elementos da coleção sobre os quais ele é aplicado. Da mesma forma, no exemplo acima temos uma tabela aninhada com o nome “my_nested_table” sobre a qual aplicamos o procedimento DELETE. Assim, na execução bem-sucedida, a chamada do procedimento excluirá todos os 10 elementos numéricos que estão armazenados nele.
Leitura sugerida:Como criar uma tabela aninhada local para o bloco PL/SQL.
Exemplo 2:chamada de procedimento com um único parâmetro
DECLARE TYPE my_nested_table IS TABLE OF NUMBER; var_nt my_nested_table := my_nested_table(2,4,6,8,10,12,14,16,18,20); BEGIN DBMS_OUTPUT.PUT_LINE('After Deleted'); --Delete Specific Index var_nt.DELETE(5); IF var_nt.EXISTS(5) THEN DBMS_OUTPUT.PUT_LINE('Value at Index [5] is '|| var_nt(5)); ELSE DBMS_OUTPUT.PUT_LINE('Data is Deleted'); END IF; END; /
Este parâmetro único é o número de índice válido da coleção. Além disso, o procedimento de coleta DELETE chamado passando um número de índice válido removerá o elemento do índice específico. Portanto, no exemplo acima, especificamos 5 como o argumento para o método de coleta PL/SQL DELETE. Assim, na execução bem-sucedida, a chamada do procedimento removerá o elemento da coleção que está armazenado no índice 5.
Exemplo 3:chamada de procedimento com dois parâmetros.
DECLARE TYPE my_nested_table IS TABLE OF NUMBER; var_nt my_nested_table := my_nested_table(2,4,6,8,10,12,14,16,18,20); BEGIN --Delete Range var_nt.DELETE(2,6); FOR i IN 1..var_nt.LAST LOOP IF var_nt.EXISTS(i) THEN DBMS_OUTPUT.PUT_LINE('Value at Index ['||i||'] is '|| var_nt(i)); END IF; END LOOP; END; /
Essa maneira de chamar o procedimento DELETE é chamada de Range delete. Aqui você tem que especificar dois índices e o procedimento exclui o intervalo de elementos que estão entre o índice inicial e o índice final. No exemplo acima, definimos o índice inicial como 2 e o índice final como 6. Isso significa que na execução a chamada de procedimento DELETE removerá todos os elementos que se enquadram nesse intervalo.
Vá em frente e copie os códigos acima em seu SQL Developer e execute-os você mesmo para ver quais são as saídas.
Você também pode assistir ao tutorial em vídeo sobre o mesmo tópico para explicação ao vivo de todos os exemplos acima.
Esse é o tutorial sobre o método de coleta PL/SQL DELETE no Oracle Database. Espero que tenha gostado da leitura e aprendido algo novo. Não deixe de compartilhar este blog em suas redes sociais. Junte-se também a mim na minha página do Facebook para conceitos mais interessantes de PL/SQL.
Obrigado e tenha um ótimo dia!