SóProvas


ID
695215
Banca
FCC
Órgão
TRF - 2ª REGIÃO
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

Sobre a instrução SELECT do Oracle, é INCORRETO afirmar:

Alternativas
Comentários
  • De acordo com minhas pesquisas, Oracle não tem RIGHT.

    O correto seria usar SUBSTR com valor negativo.
    Ex: SELECT SUBSTR(BRASIL, -3)
    Resultado: SIL


    Fonte:
    http://www.experts-exchange.com/Database/Oracle/9.x/Q_22391699.html
  • Realmente o comando do item "e" está errado, mas o comando correto para a letra "b" é NULLS FIRST.

    Isso torna a questão errada.
    A FCC ainda esta avaliando o recurso que fiz, vamos ver no que dá
  • Na verdade o gabarito dessa questão está é errado. O correto na B seria nullS first e a função RIGHT EXISTE SIM e sua sintaxe na assertiva E está perfeita:

    http://docs.oracle.com/cd/E17952_01/refman-5.1-en/string-functions.html#function_right
  • Senhores,

    essa questão foi ANULADA, apesar do gabarito correto ser a letra B, conforme explicação anterior:

    http://www.concursosfcc.com.br/concursos/trf2r111/trf2r111_atribuicoes_alteracoes_de_questoes.pdf
  • Letra A: Está correto, porque existe a tabela DUAL.

    Letra B: Está incorreta porque o nome correto do comando é NULLS FIRST. (http://www.orafaq.com/wiki/NULL)

    Letra C: Está correta porque existe a opção ROWNUM para limitar a quantidade de linhas. Lembrando que o comando não funciona usando somente o operador de igual = .

    Letra D: Está incorreta, porque no Oracle a ordernação não é Case Sensitive. (http://www.orafaq.com/node/999)

    Letra E: Está incorreta pois o comando RIGHT não existe para SGBD Oracle, para essa função é utilizado SUBSTR. Mas ele existe sim no SGBD MySQL conforme link citado pelo colega acima. (http://docs.oracle.com/cd/E17952_01/refman-5.1-en/string-functions.html#function_right)
  • a) tabela DUAL existe e seu conteúdo é:
    > select * from DUAL 
    DUMMY
    X
    Como, diferentemente dos demais bancos de dados, o Oracle não permite uma instrução SELECT sem uma cláusula FROM, é necessário uma tabela para instruções literais. 
    Por exemplo: 
    > select 1+1 as soma1mais1
    Essa instrução retornaria: 
    ORA-00923: palavra-chave FROM não localizada onde esperada
    Agora a tabela DUAL nos serve e muito
    > select 1+1 as soma1mais1 FROM DUAL nos retorna  o seguinte:
    SOMA1MAIS1
    2

    b) Correta a verificação dos colegas: (Alternativa Incorreta por erro de digitação de um S após a palavra NULL) 
    > select a,b,c order by c NULLS  FIRST

    c) ROWNUM enumera linhas de 1 a n, de modo que somente podemos filtrar linhas iniciando em 1 já que a cada linha retornada no sql, teremos um valor incremental iniciado em 1, sendo assim é possível: 
    c.1) > select * from funcionarios where ROWNUM = 1;
    c.2) > select * from funcionarios where ROWNUM >= 1; (>=2 em diante, não é possível, visto que o ROWNUM sempre inicia em 1)
    c.3) > select * from funcionarios where ROWNUM <n (n=qualquer valor de 1 em diante, independente de existir o numero n de linhas)
    c.4) > select * from funcionarios where ROWNUM <=n
    Resumindo, não é possível ROWNUM = 2..n nem mesmo ROWNUM >1..n, visto que não é necessário limitarmos resultados dessa maneira, quando quisermos utilizar uma dessas formas (erradas) é porque estaríamos querendo efetuar um filtro em cima de uma ou n colunas. 
    Também é possível combinar os ROWNUM (somente os válidos)

    d) INDEPENDENTE de o Oracle ser case INSENSITIVE, a busca ordenada, ordena pelo correspondente ASCII da letra, sendo assim, está correto. Sempre irá ordenar a letra maiúscula primeira. Vejam: 
    A = 65 Dec
    a = 97 Dec 
    a justificativa para a letra maíscula aparecer antes da minúscula em uma ordenação ascendente é que, como 65 vem antes do 97, 'A' vem antes do 'a'
    É possível alterar a ordenação através da cláusula order by:
    > ... order by NLSSORT(nome, 'NLS_SORT = XGERMAN')
    Para mais detalhes, acesse:
    http://docs.oracle.com/cd/B13789_01/server.101/b10749/ch5lings.htm#1008801

    e) RIGHT existe em mysql e não em oracle (alternativa incorreta)

    Como possuímos duas alternativas incorretas, o mais sensato seria marcar a mais incorreta de todas que é a letra E, mas a questão é passível de anulação.