SóProvas


ID
1794454
Banca
FCC
Órgão
MPE-PB
Ano
2015
Provas
Disciplina
Banco de Dados
Assuntos

 No Oracle, uma função é um bloco PL/SQL nomeado que retorna um valor. A função a seguir, calcula um imposto sobre o salá- rio com base em uma alíquota fixa simples de 27%.

CREATE OR REPLACE FUNCTION imposto(valor IN NUMBER)

RETURN NUMBER IS

BEGIN

RETURN (valor * 0.27);

END imposto;



Considere a existência de um ambiente Oracle com SQL*Plus em condições ideais, com banco de dados, tabelas, campos e valores existentes. Considere também que, nos casos necessários, foi executado o comando SET SERVEROUTPUT ON antes das instruções abaixo. 

I. SELECT nome, salario, imposto(salario)

   FROM Funcionario

   WHERE idDepartamento = 5;

II. EXECUTE dbms_output.put_line(imposto(10000));

III. VARIABLE salario NUMBER;

     EXECUTE :salario := imposto(10000);

IV. DECLARE imp NUMBER;

     BEGIN imp = imposto(10000);

     DBMS_OUTPUT.PUT('O imposto é: '|| imp);

     END;

Para chamar a função imposto, está correto o que consta APENAS em 

Alternativas
Comentários
  • O erro da alternativa IV é a atribuição. "imp = imposto(10000);"  deveria ser "imp := imposto(10000); "


  • Alguem pra comentar o item III ?

  • O item III.

    OBS: O comando da questão fala considerando o "Oracle com SQL*Plus em condições ideais". Nesse sentido, existe o conceito de bind variables in SQL*Plus. Ou seja, na primeira linha foi utilizada a variavel "salario", na segunda linha ela é referenciada com a sintaxe (:salario).
    Os comandos Estão corretos.

    Segue referencia e Exemplos:
    http://www.adp-gmbh.ch/ora/sqlplus/use_vars.html