Boa tarde pessoal! Acredito que ja abordamos este assunto, contudo, vamos nos aprofundar um pouco mais agora. O que podemos entender por Identificar os diferentes tipos de blocos PL/SQL? Se voce nao entende nada, vamos por partes: o que podemos entender por um bloco PL/SQL?Bloco PL/SQLAo meu entender, podemos considerar um bloco PL/SQL como sendo aquele bloco que possui as estruturas minimas para se executar um comando PL/SQL sem gerar erros (diferente de excecoes); Se um bloco gera erro, ele nao executa, logo, nao e um bloco PL/SQL valido. Segue a estrutura padrao de um bloco PL/SQL:[DECLARE] --Isto nao e obrigatorio! --declaracao de variaveis, cursores, etc. BEGIN --seu codigo aqui! [EXCEPTION] --Isto tambem nao e obrigatorio --tratamento de excecoes (falhas) END; Entendendo:Secao Declarativa/DECLARE: Contem todas as variaveis, constantes, cursores e excecoes definidas pelo usuario que sao referenciadas nas secoes executavel e declarativa (Opcional)Secao Executavel/BEGIN: Contem instrucoes SQL para manipular dados no banco de dados e instrucoes PL/SQL para manipular dados no bloco (Obrigatoria)Secao Tratamento de excecao/EXCEPTION: Especifica as acoes a desempenhar quando erros e condicoes anormais surgem na secao executavel (Opcional). Como ja foi citado antes, segue o bloco PL/SQL minimo aceitavel: BEGIN NULL;END;Este bloco e um bloco PL/SQL aceitavel, pois ao executa-lo, nenhum erro ocorre apesar deste comando ser inutil...Este tipo de bloco e conhecido com Bloco Anonimo. Anonimo Sem identificacao, sem nome. E o que tornaria um bloco em nao anonimo? - Bloco de Procedimento/Procedural: nada mais e do um bloco PL/SQL nomeado. A grande vantagem sobre um bloco PL/SQL anonimo e que pode ser compilado e armazenado no banco de dados como um objeto de schema. Gracas a essa caracteristica as procedures sao de facil manutencao, o codigo e reutilizavel e permitem que trabalhemos com modulos de programa.Ex.: CREATE PROCEDURE INUTIL AS BEGIN NULL; END; Olhem so que legal! Criamos uma procedure (bloco PL/SQL nomeado e armazenado) que nao serve pra p!@#$ nenhuma! Mas criamos! Se voce estiver usando o Oracle SQL Developer, pode visualiza-la aqui: Como visualizar uma procedure criada no Oracle SQL DeveloperIts alright! Its ok! Vamos tentar executar novamente o mesmo bloco? So para ver o que acontece:Erro gerado ao tentar se executar novamente o mesmo bloco PL/SQL pela segunda vezPorque deu erro se a procedure nao esta errada? Pelo simples motivo de ela ja existir! Podemos proceder de duas formas: ou atualizamos a nossa procedure, ou mudamos o nome e criamos outra. Para atualizar, basta adicionarmos o comando OR REPLACE logo apos o comando CREATE, deixando o nosso bloco assim:CREATE OR REPLACE PROCEDURE INUTIL AS BEGIN NULL; END;Entendendo o bloco: atraves no nome da procedure, o bloco verifica se ja existe outra procedure com o mesmo nome; se nao existir, ele cria (CREATE). Se existir, ele substitui (OR REPLACE). Simples assim. Certo, mas e agora, o que faco com uma procedure apos cria-la? Podemos executa-la em outro bloco PL/SQL! Qual o nome da nossa procedure? INUTIL! Entao basta chama-la da seguinte forma: BEGIN INUTIL;END;Como a procedure INUTIL nada faz, este bloco tambem nada fara. Mas que tal darmos uma razao de ser a nossa procedure?