Pular para o conteúdo principal

Questão de Banco de Dados — PL-SQL — FGV 2024

Banco de DadosPL-SQL
Código
fg098511
Banca
FGV
Órgão
TJ-MS
Ano
2024
Nível
Superior
Cargo
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á:
  1. 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;
  2. 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;
  3. 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;
  4. 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;
  5. 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.

  1. 1Declarar variável EXCEPTION
  2. 2PRAGMA EXCEPTION_INIT (código)
  3. 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.

Gabarito: letra A

Link permanente: /questoes/fg098511