SóProvas


ID
1852402
Banca
FCC
Órgão
TRT - 23ª REGIÃO (MT)
Ano
2016
Provas
Disciplina
Banco de Dados
Assuntos

Considere a instrução abaixo, digitada em um banco de dados Oracle 11g que possui a tabela Produtos, aberta e em condições ideais, contendo os campos  NomeProduto − varchar2(50), PrecoUnitario − number(5,2), UnidadesEmEstoque − integer, UnidadesNoPedido − integer:

SELECT NomeProduto, PrecoUnitario*(UnidadesEmEstoque+...l... (UnidadesNoPedido,0)) FROM Produtos; 

Para retornar 0 se o valor de UnidadesNoPedido for nulo, a lacuna I deverá ser corretamente preenchida com 




Alternativas
Comentários

  • A função NVL é utilizada quando queremos imprimir uma mensagem em determinadas linhas em que o campo especificado for nulo.
    No exemplo a seguir, vamos exemplificar a função NVL para aqueles telefones que forem nulos,
    os campos ao invés de ficarem em branco, serão demonstrados com a seguinte mensagem: "Telefone Nulo".

    Vamos ao exemplo, a sintaxe desse comando é tranquilamente simples, a função NVL recebe dois parâmetros, NVL(x, y) o x no caso, é o campo que verificaremos valores nulos, o campo y será o valor que será atribuído caso o campo especificado em x seja realmente nulo.
    SELECT NVL(telefone, "Telefone Nulo")
    FROM clientes;
     

     

  • Vamos a correção:

     a) IIF. E

        A sintaxe desse comando é: IIF (teste-expressao-boleana,exp1,exp2). Exp1 corresponde ao valor caso retorne 'TRUE', exp2 corresponde ao valor caso retorne 'FALSE'. A questão está errada por dois motivos: o comando é do SQL SERVER e não ORACLE, e além disse a sintaxe está errada. No enunciado não consta o teste da expressão booleana.

     b) E.

     A sintaxe desse comando é IFNULL (exp1,exp2). Exp1 corresponde ao valor falso e exp2 é o valor verdade. A questão está errada por um motivo: o comando é do MySQL e não do Oracle. 

     c) C. Comando usado na Oracle, e tem como sintaxe: NVL (exp1,exp2). Exp1 corresponde ao resultado caso o valor não seja nulo, e exp2 corresponde ao resultado caso o valor seja nulo.  

    d) E, pelo mesmo motivo da letra B. Vide item B.

     e) E. A sintaxe desse comando é: ISNULL (exp1,exp2). Exp1 é o valor falso, exp2 é o valor verdadeiro. A questão está errada por um dois: o comando é do SQLServer, e a sintaxe está errada.

  • Conversando com professores sobre essa questão, me disseram que deveria ser anulada, pois a c) e a d) estão corretas.

  • C) e D) estão corretas

    Só consultar na internet: http://stackoverflow.com/questions/950084/oracle-differences-between-nvl-and-coalesce

    Além disso, a D) seria a melhor alternativa, pois conforme artigo acima, o COALESCE não calcula/avalia o segundo valor sem que o primeiro seja nulo, ou seja, COALESCE é mais rápido.

     

     

     

  • Conforme dito pelos demais colegas, as funções NVL e COALESCE fazem a mesma coisa.
    Substituem um valor nulo por outro valor.

    Entretanto, a função NVL é um padrão Oracle, enquanto a função COALESCE é padrão ANSI.

    E no enunciado fica explícito o SGBD utilizado --> Oracle 11g

  • Concordo com os colegas Adailton e Jean, a questão deveria ter sido anulada. Embora NVL seja a função específica do Oracle, COALESCE também suportada. Diferentemente de IFNULL, por exemplo, que é do MYSQL, e ISNULL, que é o SQL Server. 

  • Função NVL: A função NVL( ) encontra-se disponível no sistema Oracle, mas não nos sistemas MySQL ou SQL Server. Esta função é utilizada para substituir o valor NULL por outro valor. É semelhante à função IFNULL no sistema MySQL e à função ISNULL no SQL Server.

     

     

    https://www.1keydata.com/pt/sql/sql-nvl.php