Questão FC372888
Considere o bloco PL/SQL abaixo, em um ambiente Oracle em condições ideais. DECLARE vColNo colaborador.idColaborador%TYPE := 371; vAst colaborador.estrelas%TYPE := NULL; vSal colab
Linguagem SQL
FCC · 2020
Considere o bloco PL/SQL abaixo, em um ambiente Oracle em condições ideais.
DECLARE
vColNo colaborador.idColaborador%TYPE := 371;
vAst colaborador.estrelas%TYPE := NULL;
vSal colaborador.salario%TYPE;
BEGIN
SELECT NVL(ROUND(salario/5000), 0) INTO vSal
FROM colaborador WHERE idColaborador = vColNo;
...I...
UPDATE colaborador SET estrelas = vAst
WHERE idColaborador = vColNo;
COMMIT;
END;
/
Para adicionar um asterisco na coluna estrelas para cada R$5000 do salário do funcionário (se o número for 10.000, existirão 2 asteriscos, por exemplo), a lacuna I acima deve ser preenchida por
FOR i:=0 TO vSal.length STEP 1
BEGIN
vAst:= vAst + '*';
END FOR;
FOR i IN 1.. vSal
LOOP
vAst:= vAst ||'*';
END LOOP;
VAR i:=1
WHILE(i <= vSal.lenght)
BEGIN
vAst:= vAst || '*';
i++;
END WHILE;
FOR i:=0 TO vSal.lenght STEP 1
LOOP
vAst:= vAst + '*';
END LOOP;
FOR i IN 0.. vSal STEP 1
BEGIN
vAst:= vAst + '*';
END;
Mostrar resposta e comentário
Gabarito
B
Comentário do professor
A opção apresentada usa corretamente o laço FOR na forma FOR i IN 1..vSal LOOP ... END LOOP;, que executa o corpo exatamente vSal vezes (a variável de controle i é implícita e não precisa ser declarada).
Dentro do laço, a atribuição vAst := vAst || '*' concatena um asterisco a cada iteração usando o operador de concatenação ||. Em Oracle, concatenar NULL com uma string resulta na própria string, por isso a inicialização de vAst como NULL não impede o funcionamento.
Como vSal foi obtido por \( \text{NVL(ROUND(salario/5000),0)} \), o laço adiciona um asterisco para cada \(R\$5000\) do salário (ex.: \(10000\rightarrow2\) iterações). Ao final, o UPDATE grava vAst em estrelas e o COMMIT persiste a alteração.
Conteúdo do catálogo FC Concursos · Atualizado em