Considere o trecho de código abaixo. SQL> DECLARE ...
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
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a A - está escrito em PL/SQL e copiará para bonus 10% do salário do funcionário cujo identificador é 1005.
Para resolver essa questão, é essencial entender a sintaxe e a funcionalidade da linguagem PL/SQL, usada no banco de dados Oracle. Este bloco PL/SQL é uma estrutura básica com a declaração de variáveis, uma consulta que atribui um valor a uma variável e o terminador do bloco.
A linha "DECLARE
" indica o início de um bloco que permite a declaração de variáveis e, neste caso, duas variáveis são declaradas: bonus
como um número com duas casas decimais e id_func
como um número que já recebe o valor 1005.
No bloco "BEGIN ... END
", há uma consulta SQL que calcula 10% (salario * 0.10
) do salário do funcionário e armazena o resultado na variável bonus
. A cláusula INTO
é usada para atribuir o resultado da consulta a uma variável em PL/SQL.
O filtro na consulta "WHERE id_funcionario = id_func
" garante que apenas o salário do funcionário com identificador 1005 seja utilizado. A comparação usa o operador de igualdade =
, que é o correto para comparações em SQL, enquanto o operador :=
é usado para atribuições em PL/SQL, como visto na declaração de id_func
. A ausência de erros de sintaxe nesta estrutura confirma que a alternativa A é a resposta correta.
O bloco é finalizado com "END;
" e a barra "/
" na linha seguinte é usada para executar o bloco PL/SQL no SQL*Plus, que é um ambiente de linha de comando do Oracle.
Em resumo, o código executa exatamente o que a alternativa A descreve: ele está escrito na linguagem PL/SQL do Oracle e calcula um bônus de 10% do salário do funcionário com ID 1005, armazenando o resultado na variável bonus
.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo