FC ConcursosFC Concursos

Questão FC372900

Considere o código PL/SQL abaixo. DECLARE PROCEDURE calc ( vendas NUMBER, quota NUMBER, emp_id NUMBER ) IS bonus NUMBER := 0; BEGIN IF vendas > (quota + 200) THEN bonus := (vendas

Linguagem SQL

FCC · 2018

Considere o código PL/SQL abaixo. 

 

 DECLARE

   PROCEDURE calc (

     vendas  NUMBER,

     quota  NUMBER,

     emp_id NUMBER

   )

   IS

     bonus  NUMBER := 0;   

BEGIN

     IF vendas > (quota + 200) THEN

       bonus := (vendas - quota)/4;

     ELSE

       bonus := 50;

     END IF;

 

       DBMS_OUTPUT.PUT_LINE('bônus = ' || bonus);

 

       UPDATE tabEmpregados

     SET salario = salario + bonus

      WHERE empregado_id = emp_id;

   END calc;

BEGIN

   calc(10100, 10000, 120);

   calc(12000, 10000, 121);

END;

/ 

Ao executar o código acima no Oracle 12c em condições ideais, o resultado será 

  1. bônus = 0  bônus = 50
  2. bônus = 50  bônus = 500
  3. bônus = 50  bônus = 3000
  4. bônus = 0  bônus = 500
  5. um erro de execução, pois deveria ser usado o comando SELECT e não UPDATE.
Mostrar resposta e comentário

Gabarito

B

Comentário do professor

Ao executar o bloco, a primeira chamada calc(10100, 10000, 120) atribui vendas=10100 e quota=10000. A condição IF vendas > (quota + 200) verifica se 10100 > 10200 — é falsa, portanto entra no ELSE e define bonus = 50. Em seguida é executado DBMS_OUTPUT.PUT_LINE('bônus = ' || bonus), exibindo "bônus = 50".

Na segunda chamada calc(12000, 10000, 121) temos vendas=12000 que satisfaz 12000 > 10200, logo o bloco IF é executado e calcula bonus como \( (12000-10000)/4 = 2000/4 = 500 \). Novamente DBMS_OUTPUT.PUT_LINE imprime "bônus = 500". Cada chamada também realiza o UPDATE que acrescenta o respectivo bônus ao salário do empregado informado.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo