FC ConcursosFC Concursos

Questão FC369518

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 prod

Linguagem SQL

FGV · 2024

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á:

  1. 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;
  2. utilizar 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;
  3. utilizar 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;
  4. utilizar 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;
  5. usar as exceções embutidas já fornecidas pelo Oracle, o que torna desnecessário criar uma exceção personalizada.
Mostrar resposta e comentário

Gabarito

A

Comentário do professor

Declare no bloco PL/SQL uma variável do tipo EXCEPTION na seção declarativa. Essa declaração cria um identificador simbólico para tratar o erro de negócio (estoque insuficiente).

Use PRAGMA EXCEPTION_INIT para associar essa exceção a um código de erro numérico do Oracle (por exemplo, um código gerado por RAISE_APPLICATION_ERROR ou um erro pré-existente). A diretiva fica também na seção declarativa e vincula o nome da exceção ao SQLCODE.

No corpo do procedimento, verifique a condição (por exemplo, quantidade vendida > quantidade em estoque) e então use RAISE para lançar a exceção declarada. Assim, o fluxo é interrompido e o tratamento pode ser centralizado no bloco EXCEPTION ou propagado para quem chamou.

Exemplo conceitual: declarar insuf_estoque EXCEPTION;
PRAGMA EXCEPTION_INIT(insuf_estoque, -20001);
no código: IF vendida > estoque THEN RAISE insuf_estoque; END IF;

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo