none
Views com Order By não funcionam quando migra do SQL 2000 para o SQL 2005 RRS feed

  • Pergunta

  • Boa tarde, estou com um problema no SQL Server 2005 com relação a Views.

    Quando executo a query os dados retornam ordenados pelo campo que eu quero.

    Quando eu salvo a query dentro de uma view e executo,  os dados estão retornando desprezando a cláusula order by. O que pode ser isso??

    sexta-feira, 4 de agosto de 2006 17:55

Respostas

  • não é possivel usar  a intrução order by dentro de uma definição de view..... depois que fizer a chamada na vies vc poderá usar o orderby sem problemas

    ex:

     

    CREATE VIEW  EMP
    AS
    SELECT EMPLOYEEID,  FIRSTNAME, LASTNAME
    FROM EMPLOYEES
    GO

     

    SELECT * FROM EMP
    ORDER BY EMPLOYEEID

     

    sexta-feira, 4 de agosto de 2006 19:10

Todas as Respostas

  • não é possivel usar  a intrução order by dentro de uma definição de view..... depois que fizer a chamada na vies vc poderá usar o orderby sem problemas

    ex:

     

    CREATE VIEW  EMP
    AS
    SELECT EMPLOYEEID,  FIRSTNAME, LASTNAME
    FROM EMPLOYEES
    GO

     

    SELECT * FROM EMP
    ORDER BY EMPLOYEEID

     

    sexta-feira, 4 de agosto de 2006 19:10
  • Uma opção para utilizar a clausula ORDER BY dentro de Views é utilizar a clausula TOP 100 PERCENT.

    SELECT TOP 100 PERCENT coluna1, coluna2
    FROM table1
    ORDER BY coluna1

    sábado, 5 de agosto de 2006 17:34
  • O problema é esse. Eu estou usando a cláusula TOP 100 Percent e mesmo assim o resultado não vem ordenado!! No SQL Server 2000 e 7.0 a View funciona perfeitamente.
    segunda-feira, 7 de agosto de 2006 11:39
  • Henrique,

    Em uma view o order by não tem valor, ou seja, a sua função é despreçada, a view é um recurso estático que não permite este tipo de interatividade.

    Faça o seguinte crie a sua view sem declarar o order by, no momento da execução da view você utiliza order by.

    Conforme o exemplo do André.

    segunda-feira, 7 de agosto de 2006 14:07
    Moderador
  • Henrique, fiz um teste e realmente a partir do SQL2005 o Query Optimizer remove esses operadores, antes isso era possivel.

    Segue o link que explica com detalhes essa situação:
    http://blogs.msdn.com/queryoptteam/archive/2006/03/24/560396.aspx

    segunda-feira, 7 de agosto de 2006 14:35
  • Tive que acabar fazendo isso mesmo. Obrigado pessoal pela atenção.
    segunda-feira, 7 de agosto de 2006 17:38
  • Olá Henrique,

    Uma outra alternativa seria alterar suas views para store procedures!

    um abraço

    sábado, 12 de agosto de 2006 12:34
    Moderador