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
Aestá escrito em PL/SQL e copiará para bonus 10% do salário do funcionário cujo identificador é 1005.
Bnão é compatível com a versão 11g do Oracle
Cestá escrito em PL/SQL e selecionará todos os salários, acrescidos do bonus de 10%, da tabela tab_funcionarios.
Destá escrito em PL/SQL, mas compilará com erro, pois deveria ter sido usado o operador := no lugar de =.
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.