Pular para o conteúdo principal

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

Banco de DadosSQL
Código
fc023532
Banca
FCC
Órgão
TRE-AP
Ano
2015
Nível
Médio
Cargo
Técnico Judiciário - Programação de Sistemas
Considere o trecho de código abaixo. SQL> DECLARE 2 bonus NUMBER(8,2); 3 id_func NUMBER(6) := 1005; 4 BEGIN 5 SELECT salario * 0.10 INTO bonus 6 FROM tab_funcionarios 7 WHERE id_funcionario = id_func; 8 END; 9 /Sabendo-se que a tabela foi criada no Oracle 11g e que o banco de dados opera em condições ideais, o código
  1. Aestá escrito em PL/SQL e copiará para bonus 10% do salário do funcionário cujo identificador é 1005.
  2. Bnão é compatível com a versão 11g do Oracle
  3. Cestá escrito em PL/SQL e selecionará todos os salários, acrescidos do bonus de 10%, da tabela tab_funcionarios.
  4. Destá escrito em PL/SQL, mas compilará com erro, pois deveria ter sido usado o operador := no lugar de =.
  5. Eapresentará erros de compilação, pois os tipos das variáveis estão declarados de forma errada no Oracle 11g.
Revelar gabarito e comentário

GabaritoA — está escrito em PL/SQL e copiará para bonus 10% do salário do funcionário cujo identificador é 1005.

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 e SELECT INTO

Gabarito: letra A. O código está escrito em PL/SQL e, ao executar o bloco anônimo, a variável bonus receberá 10% do salário do funcionário cujo id_funcionario é igual a 1005 (valor atribuído à variável id_func). A sintaxe do SELECT ... INTO está correta para atribuir o resultado de uma consulta que retorna uma única linha a uma variável.

Alternativa A — ✅ Correta ⟵ GABARITO

O bloco está em PL/SQL (linguagem procedural do Oracle). A declaração de variáveis com DECLARE, a atribuição com := e o uso de SELECT ... INTO para popular bonus são válidos. A condição WHERE id_funcionario = id_func compara a coluna com a variável id_func (valor 1005), portanto apenas o registro do funcionário 1005 é selecionado e o cálculo de 10% do salário é armazenado em bonus.

Alternativa B — ❌ Incorreta

O Oracle 11g suporta PL/SQL nativamente. Não há incompatibilidade com essa versão, pois o PL/SQL é parte integrante do banco de dados desde versões anteriores.

Alternativa C — ❌ Incorreta

O SELECT ... INTO só pode retornar uma única linha (caso contrário lança exceção TOO_MANY_ROWS). A consulta possui uma cláusula WHERE que restringe a apenas um funcionário (id_func=1005), portanto não seleciona todos os salários nem acrescenta bônus a eles.

Alternativa D — ❌ Incorreta

Em PL/SQL, o operador de atribuição de variáveis é := (usado corretamente nas linhas 2 e 3). Na linha 7, o sinal = é o operador de comparação (igualdade) dentro da condição WHERE, o que é perfeitamente válido. Portanto não há erro de sintaxe.

Alternativa E — ❌ Incorreta

As declarações de variáveis estão corretas: NUMBER(8,2) e NUMBER(6) são tipos válidos no Oracle 11g. Não há erro de compilação quanto aos tipos.

PEGA ESSA DICA!

Questões de PL/SQL em concursos costumam testar a diferença entre = (comparação) e := (atribuição). No bloco anônimo, := é usado para atribuir valor inicial à variável; já no WHERE, usamos = para comparar coluna com variável. Fique atento a esses detalhes.

Gabarito: letra A

Link permanente: /questoes/fc023532