Questão de Banco de Dados — PL/SQL e Outras Extensões SQL — FUNDATEC 2025
Banco de Dados›PL/SQL e Outras Extensões SQL
Código
qa699057
Banca
FUNDATEC
Órgão
PROCERGS
Ano
2025
Cargo
ANC ( )
São palavras reservadas da linguagem PL/SQL utilizadas no tratamento de exceções:
I. EXCEPTION_INIT, RAISE, PRAGMA.
II. EXCEPTION, OTHERS, RAISE_APPLICATION_ERROR.
III. NO_DATA_FOUND, SQLERRM, SQLCODE.
Quais estão corretas?
AApenas I.
BApenas II.
CApenas I e III.
DApenas II e III.
EI, II e III.
Revelar gabarito e comentário▾
GabaritoE — I, II e III.
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”.
Palavras reservadas e tratamento de exceções em PL/SQL
Gabarito: letra E. Todos os itens (I, II e III) listam corretamente palavras reservadas e elementos da linguagem PL/SQL utilizados no tratamento de exceções: EXCEPTION_INIT, RAISE, PRAGMA, EXCEPTION, OTHERS, RAISE_APPLICATION_ERROR, NO_DATA_FOUND, SQLERRM e SQLCODE. A questão cobra o reconhecimento desses elementos como parte do mecanismo de tratamento de erros da linguagem procedural da Oracle.
O PL/SQL (Procedural Language/Structured Query Language) é a extensão procedural da Oracle para o SQL, permitindo a construção de blocos de código com lógica de programação. Um bloco PL/SQL típico possui a estrutura DECLARE (declarações), BEGIN (seção executável), EXCEPTION (tratamento de exceções) e END. É justamente na seção EXCEPTION que o programador define como o banco deve reagir a erros em tempo de execução, e é aí que entram as palavras e elementos listados nos itens.
O tratamento de exceções em PL/SQL funciona com base em dois pilares: a declaração de exceções (predefinidas ou definidas pelo usuário) e o manuseio dessas exceções quando elas ocorrem. As exceções predefinidas, como NO_DATA_FOUND (disparada quando um SELECT INTO não retorna linhas) e DUP_VAL_ON_INDEX (quando há violação de unicidade), são reconhecidas pelo nome. Para exceções definidas pelo usuário, utiliza-se a diretiva PRAGMA EXCEPTION_INIT para associar um nome a um código de erro Oracle específico. O comando RAISE é usado para disparar uma exceção explicitamente, e a função RAISE_APPLICATION_ERROR permite lançar erros personalizados com mensagens próprias. As funções SQLERRM e SQLCODE retornam, respectivamente, a mensagem e o código do último erro ocorrido, sendo essenciais para diagnóstico.
A banca explora aqui o conhecimento da sintaxe e dos elementos da seção de exceções, um tópico recorrente em provas de banco de dados que cobram Oracle. A pegadinha não está em um termo específico, mas na amplitude do que é considerado "palavra reservada" ou "elemento" do tratamento de exceções: a questão mistura comandos (RAISE), diretivas (PRAGMA), funções (SQLERRM, SQLCODE), exceções predefinidas (NO_DATA_FOUND) e a cláusula OTHERS (que captura qualquer exceção não tratada). O candidato que conhece a estrutura do bloco e os elementos da seção EXCEPTION reconhece todos os itens como corretos.
Guarde a distinção entre os elementos: EXCEPTION é a seção do bloco; OTHERS é o handler genérico; RAISE e RAISE_APPLICATION_ERROR são comandos de disparo; PRAGMA EXCEPTION_INIT é a diretiva de associação; NO_DATA_FOUND é uma exceção predefinida; SQLERRM e SQLCODE são funções de diagnóstico. É exatamente essa variedade que a questão testa — e todos os itens estão corretos.
O item lista EXCEPTION_INIT, RAISE e PRAGMA, todos elementos válidos do tratamento de exceções em PL/SQL. PRAGMA EXCEPTION_INIT é a diretiva que associa um nome de exceção definida pelo usuário a um código de erro Oracle (ex.: PRAGMA EXCEPTION_INIT (meu_erro, -2292);). RAISE é o comando que dispara uma exceção explicitamente dentro do bloco. Portanto, o item está correto.
Item II — ✅ Correto
O item lista EXCEPTION, OTHERS e RAISE_APPLICATION_ERROR. EXCEPTION é a seção do bloco PL/SQL destinada ao tratamento de erros; OTHERS é o handler que captura qualquer exceção não tratada especificamente; RAISE_APPLICATION_ERROR é um procedimento que permite lançar erros personalizados com número e mensagem próprios (ex.: RAISE_APPLICATION_ERROR(-20001, 'Erro personalizado');). Todos são elementos legítimos do mecanismo de exceções. Item correto.
Item III — ✅ Correto
O item lista NO_DATA_FOUND, SQLERRM e SQLCODE. NO_DATA_FOUND é uma exceção predefinida da Oracle, disparada quando um SELECT INTO não retorna nenhuma linha. SQLERRM é uma função que retorna a mensagem de erro associada ao código de erro atual (ou a um código passado como argumento). SQLCODE é uma função que retorna o código numérico do último erro ocorrido. Todos são elementos diretamente ligados ao tratamento de exceções. Item correto.
PEGA ESSA DICA!
Para fixar, monte um mapa mental da seção EXCEPTION do bloco PL/SQL: de um lado, os disparadores (RAISE, RAISE_APPLICATION_ERROR); do outro, os capturadores (WHEN ... THEN, OTHERS); e, por fim, as ferramentas de diagnóstico (SQLERRM, SQLCODE). Lembre-se de que PRAGMA EXCEPTION_INIT é a ponte entre um nome de exceção e um código de erro Oracle, e que NO_DATA_FOUND é uma das exceções predefinidas mais cobradas. Essa estrutura cobre praticamente todas as questões sobre o tema.
Gabarito: letra E — corretos os itens I, II e III.