none
Order by dinâmica passando parametros RRS feed

  • Pergunta

  • Olá amigos,

     

    Estou com o seguinte problema.


     Tenho que criar uma order by dinâmico, a procedure está assim:

     

    CREATE PROCEDURE [dbo].[minhaprocedure]
     (@Id   [int]=null)
     
    AS
    SELECT Id, Nome, Cidade
    FROM         MInhaTabela
    GO

     

    Tentei assim:

     

    CREATE PROCEDURE [dbo].[minhaprocedure]
     (@Id   [int]=null,
      @Ordem  [varchar]=null)
     
    AS
    SELECT Id, Nome, Cidade
    FROM         MInhaTabela
    order by @Ordem
    GO

     

    Mas dá erro pois @Ordem não é uma coluna da Tabela

     

    Alguém tem alguma sugestão?

     

    Desde já agradeço

     

    Fábio Santos

    sexta-feira, 20 de julho de 2007 13:42

Respostas

  •  

     

     vc. pode ou usar um case

    exemplo

     

      select campo1, campo2

     from tabela

     order by Case When @ordem = 1 Then campo1 Else Campo2 End

     

    Abs;

    sexta-feira, 20 de julho de 2007 13:44

Todas as Respostas

  •  

     

     vc. pode ou usar um case

    exemplo

     

      select campo1, campo2

     from tabela

     order by Case When @ordem = 1 Then campo1 Else Campo2 End

     

    Abs;

    sexta-feira, 20 de julho de 2007 13:44
  • Olá Marcelo obrigado pela resposta.

     

    Mas surgiu umas duvida

     

    O parametro @Ordem seria um... (varchar)?
      O order by seria usado em mais de três colunas do datagrid, passado atraves de um QueryString como fazer o case

     

    Desde já agradeço

     

    Fábio Santos

    sexta-feira, 20 de julho de 2007 13:59
  • sem problemas

     

    e to alterar a rotina

     

    select campo1, campo2

     from tabela

     order by Case When @ordem = 'valor'  Then campo  Else Campo2 End

     

     

    Abs;

     

     

     

    sexta-feira, 20 de julho de 2007 14:01