Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FCC 2015

Banco de DadosSQL
Código
fc026357
Banca
FCC
Órgão
TRT - 4ª REGIÃO (RS)
Ano
2015
Nível
Médio
Cargo
Técnico Judiciário - Tecnologia da Informação
Considere o trecho de código abaixo.SQL> DECLARE 2 total NUMBER; 3 horas_trab NUMBER := 40; 4 valor_hora NUMBER := 52.50; 5 bonus NUMBER := 1500.00; 6 nome VARCHAR2(128); 7 id_ok BOOLEAN; 8 9 BEGIN 10 total := (horas_trab * valor_hora) + bonus; 11 nome := 'Antonia Santos'; 12 id_ok := TRUE; 13 END; 14 / O código
  1. Aescrito em PL/SQL não executará no Oracle 11g, pois a inicialização das variáveis está errada.
  2. Btraz tipos de dados totalmente compatíveis com a linguagem SQL.
  3. Cescrito para o SGBD PostgreSQL, executará sem erros, pois não apresenta erros de sintaxe.
  4. Descrito em PL/SQL executará no SGBD Oracle 11g e não apresenta erros de sintaxe.
  5. Etraz erros na declaração de variáveis com parte fracionária, pois deveria ser NUMBER (4,2).
Revelar gabarito e comentário

GabaritoD — escrito em PL/SQL executará no SGBD Oracle 11g e não apresenta erros de sintaxe.

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”.

PL/SQL: Bloco Anônimo e Sintaxe

Gabarito: letra D. O código apresentado é um bloco PL/SQL perfeitamente válido para Oracle 11g. A declaração e inicialização de variáveis na seção DECLARE é permitida, e os tipos utilizados (NUMBER, VARCHAR2, BOOLEAN) são suportados em PL/SQL. Não há erros de sintaxe, e o bloco executaria normalmente.

A banca testa o conhecimento básico de sintaxe PL/SQL e a diferença entre os tipos SQL e PL/SQL. A pegadinha principal é que alguns candidatos podem achar que a inicialização simultânea à declaração é inválida, ou que o tipo BOOLEAN (que não existe no SQL puro) causaria erro, mas ambos são perfeitamente válidos em PL/SQL.

Alternativa A — ❌ Incorreta

Afirma que o código não executará no Oracle 11g porque a inicialização das variáveis está errada. Na verdade, a inicialização na seção DECLARE é uma característica padrão do PL/SQL. O código é sintaticamente correto.

Alternativa B — ❌ Incorreta

Diz que os tipos de dados são totalmente compatíveis com a linguagem SQL. O tipo BOOLEAN é exclusivo do PL/SQL e não existe no SQL padrão. Portanto, a afirmação é falsa.

Alternativa C — ❌ Incorreta

Alega que o código foi escrito para PostgreSQL e executará sem erros. Embora a sintaxe do PL/pgSQL seja semelhante, há diferenças: o uso de NUMBER (Oracle) em vez de NUMERIC ou DECIMAL, e detalhes de implementação. O bloco é tipicamente Oracle, mas mesmo que houvesse similaridade, não é garantido que executaria sem adaptações. A alternativa é, portanto, incorreta.

Alternativa D — ✅ Correta ⟵ GABARITO

O código é um bloco PL/SQL válido para Oracle 11g, sem erros de sintaxe. A declaração e inicialização estão corretas, e todos os tipos utilizados são suportados em PL/SQL.

Alternativa E — ❌ Incorreta

Sugere que há erro na declaração de variáveis com parte fracionária, que deveriam ser declaradas como NUMBER(4,2). Entretanto, o tipo NUMBER sem precisão e escala é perfeitamente capaz de armazenar valores com parte decimal. A declaração está correta.

PEGA ESSA DICA!

Em PL/SQL, a seção DECLARE pode conter inicializações com :=. O tipo BOOLEAN é aceito apenas em PL/SQL, não em SQL. Já o tipo NUMBER, sem especificação de precisão, é flexível e suporta decimais.

Gabarito: letra D.

Link permanente: /questoes/fc026357