none
Order by dinâmica em stored procedure RRS feed

  • Pergunta

  • Olá,

     

    Tenho uma stored procedure que retorna alguns registros.

    Porém, dependendo da situação, eu preciso destes registros com certa ordenação.

     

    Como posso fazer isso? Tente enviar via parâmetro mas não funciona. Dá erro 1008.

     

    sds,

    Clemilson.

    sábado, 28 de julho de 2007 14:39

Todas as Respostas

  •  

    Olá!

     

     

    Não sei se você já tentou fazer desta forma, mas, tente colocar um CASE dentro do ORDER BY, assim:

     

    Code Snippet

    ORDER BY

    CASE @parametro

    WHEN 0 THEN ColunaX

    ELSE ColunaY

    END

     

     

     

    Qualquer problema retorne.

     

     

    Abraço

     

     

    sábado, 28 de julho de 2007 17:47
  • Clemilson,

     

    uma outra forma de fazer é montando a string sql que deseja executar, por exemplo:

     

    declare @strsql varchar(500)

    declare @campo varchar(50)

     

    set @campo = "order by campo1 desc"

    -- declarei varchar para que possa utilizar o nome do campo, mas dependendo de sua necessidade poderia fornecer o --numero da coluna !

     

    Set @strsql = " Select * from tabela " + @campo

    exec(@strsql)

     

     

    esta é apenas mais uma forma de fazer !!

     

    Espero ter ajudado !!

     

    Até !

    quarta-feira, 1 de agosto de 2007 03:34
  • Clemilson,

     

    O SQL Server possue uma função chamada NewId(), esta função tem como objetivo, criar um novo identificador único, ou seja, um valor que não se repete sendo criado de forma aleatória.

     

    Veja este exemplo abaixo:

     

    Create Table #Teste

    (codigo int identity(1,1),

    descricao varchar(10))

     

    Insert Into #Teste Values('Arroz')

    Insert Into #Teste Values('Feijão')

    Insert Into #Teste Values('Milho')

    Insert Into #Teste Values('Sal')

    Insert Into #Teste Values('Açucar')

    Insert Into #Teste Values('Cebola')

     

    Select * from #Teste

    Select *, NewId() from #Teste

    Order By NewId()

     

    quarta-feira, 1 de agosto de 2007 11:17