Técnico de Nível Superior - Analista de Sistemas Computacionais - Analista de Sistemas
Durante o desenvolvimento de um sistema de gestão de estoque para uma empresa de varejo, o desenvolvedor se depara com uma situação desafiadora. O sistema deve garantir que os produtos em estoque nunca tenham uma quantidade negativa, pois isso pode causar problemas sérios de integridade de dados e impactar as operações da empresa. No entanto, enquanto revisava o código do procedimento PL/SQL responsável por atualizar a quantidade de produtos em estoque após uma venda, o desenvolvedor percebeu que não havia tratamento de exceções para o caso em que a quantidade vendida fosse maior que a quantidade disponível em estoque. Diante dessa situação, o desenvolvedor precisa criar uma exceção específica, associá-la a um código de erro personalizado e garantir que o sistema use a nova exceção criada.Para atingir esse objetivo, o desenvolvedor deverá:
Adefinir uma variável do tipo EXCEPTION, associar um código de erro específico à exceção usando PRAGMA EXCEPTION_INIT e usar RAISE para lançar a exceção personalizada no procedimento PL/SQL;
Butilizar uma declaração EXCEPTION para definir a exceção personalizada e associar um código de erro específico diretamente no RAISE, dentro do procedimento PL/SQL;
Cutilizar uma declaração EXCEPTION para definir a exceção personalizada e lançar a exceção diretamente no procedimento PL/SQL, sem associar um código de erro específico;
Dutilizar uma declaração EXCEPTION para definir a exceção personalizada e associar um código de erro específico usando PRAGMA EXCEPTION_INIT, mas não utilizar RAISE no procedimento PL/SQL;
Eusar as exceções embutidas já fornecidas pelo Oracle, o que torna desnecessário criar uma exceção personalizada.
Revelar gabarito e comentário▾
GabaritoA — definir uma variável do tipo EXCEPTION, associar um código de erro específico à exceção usando PRAGMA EXCEPTION_INIT e usar RAISE para lançar a exceção personalizada no procedimento PL/SQL;
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Criando exceções personalizadas em PL/SQL
Gabarito: letra A. Para criar uma exceção personalizada em PL/SQL, é necessário declarar uma variável do tipo EXCEPTION, associar um número de erro Oracle a essa exceção usando a diretiva PRAGMA EXCEPTION_INIT (tipicamente na seção declarativa) e, por fim, lançar a exceção com o comando RAISE dentro do bloco executável quando a condição desejada for detectada. Esse é o padrão da linguagem para implementar exceções definidas pelo usuário com código de erro próprio.
A banca testa o conhecimento da sintaxe correta para exceções personalizadas no PL/SQL, que envolve três etapas: declaração, associação de código e lançamento.
1Declarar variável EXCEPTION
2PRAGMA EXCEPTION_INIT (código)
3RAISE no bloco executável
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
A alternativa descreve exatamente o fluxo: declarar uma variável do tipo EXCEPTION, usar PRAGMA EXCEPTION_INIT para vincular um número de erro Oracle (ex.: -20001) e, no corpo do procedimento, usar RAISE <nome_da_excecao> para lançá-la. Esse é o procedimento padrão da documentação Oracle.
Alternativa B — ❌ Incorreta
Afirma que o código de erro pode ser associado "diretamente no RAISE". Isso não é válido em PL/SQL — o RAISE apenas lança a exceção; a associação do código é feita exclusivamente pela PRAGMA EXCEPTION_INIT na seção de declaração.
Alternativa C — ❌ Incorreta
Dispensa a associação de um código de erro específico. O enunciado pede expressamente que o desenvolvedor associe um código personalizado. Exceções sem PRAGMA EXCEPTION_INIT podem ser usadas, mas não atendem ao requisito de "associar um código de erro personalizado".
Alternativa D — ❌ Incorreta
Propõe não usar RAISE no procedimento. Sem o RAISE, a exceção nunca será lançada durante a execução, tornando inútil a sua definição.
Alternativa E — ❌ Incorreta
Sugere usar apenas exceções embutidas do Oracle. O problema exige uma exceção personalizada para a situação específica (quantidade vendida maior que o estoque). As exceções predefinidas (como NO_DATA_FOUND, DUP_VAL_ON_INDEX) não cobrem essa lógica de negócio, portanto é necessário criar uma nova.
NÃO CAIA NESSA!
A alternativa B confunde o local onde o código de erro é associado — muitos candidatos pensam que se pode passar o código diretamente no RAISE, mas a associação é sempre via PRAGMA EXCEPTION_INIT.