none
Query pedir "valor" para determinados campos ao usuário RRS feed

  • Pergunta

  •  

    Pessoal,

    Existe alguma maneira de numa query fazer com que o SQL "pergunte" qual o valor que eu desejo pesquisar? Exemplo:

     

    SELECT
    *
    FROM
        TABELA_X
    WHERE
        CDCAMPO IN (1,2) AND
        DTINCLUSAO BETWEEN 'AAAA-MM-DD' AND 'AAAA-MM-DD'

     

    A idéia que tenho é que no momento que eu for executar a consulta, que o SQL peça as datas para o campo DTINCLUSAO. A proposta é para evitar que o usuário "esqueça" de colocar as datas corretas.

     

    terça-feira, 4 de novembro de 2008 12:46

Respostas

  • Antonio,

     

    Perguntar propriamente dito não existe, o que poderia ser utilizado seria uma Stored Procedure com parâmetros para entrada de valores, onde estaria obrigando o usuário a informar o valor deseja para realizar esta pesquisa.

     

    Veja abaixo o exemplo:

     

    Code Snippet

    Create Procedure SP_Consulta @DTInclusaoInicial DateTime, @DTInclusaoFinal DateTime

    As

    Begin

     SELECT
     *
     FROM
        TABELA_X
     WHERE
         CDCAMPO IN (1,2) AND
         DTINCLUSAO BETWEEN @DTInclusaoInicial AND @DTInclusaoFinal

    End

     

     

     

    terça-feira, 4 de novembro de 2008 13:09

Todas as Respostas

  • Antonio,

     

    Perguntar propriamente dito não existe, o que poderia ser utilizado seria uma Stored Procedure com parâmetros para entrada de valores, onde estaria obrigando o usuário a informar o valor deseja para realizar esta pesquisa.

     

    Veja abaixo o exemplo:

     

    Code Snippet

    Create Procedure SP_Consulta @DTInclusaoInicial DateTime, @DTInclusaoFinal DateTime

    As

    Begin

     SELECT
     *
     FROM
        TABELA_X
     WHERE
         CDCAMPO IN (1,2) AND
         DTINCLUSAO BETWEEN @DTInclusaoInicial AND @DTInclusaoFinal

    End

     

     

     

    terça-feira, 4 de novembro de 2008 13:09
  •  

    Junior,

     

    Obrigado!

     

    Conseguir resolver o problema!

     

    Um abraço!

    terça-feira, 4 de novembro de 2008 13:26
  • Olá Antônio,

     

    Seja bem vindo ao fórum de SQL Server no MSDN. Nós participantes do fórum tentaremos ajudá-lo com suas dúvidas e problemas através da nossa experiência, disponibilidade e conhecimento.

     

    Esse tipo de solicitação era muito comum no Access, mas temos de lembrar que o Access não contém somente os dados, mas também é um front end enquanto que o SQL Server é apenas um banco de dados e em princípio não atende solicitações e iterações diretamente com o usuário (é por isso que existe uma aplicação no meio).

     

    O que você pode fazer é que caso o usuário não informe à aplicação que datas deseja, o SQL Server automaticamente coloque as datas. Ex:

     

    Code Snippet

    Create Procedure SP_Consulta

    @DTInclusaoInicial DateTime = null,

    @DTInclusaoFinal DateTime = null

    As

    Begin

    SELECT * FROM TABELA_X

    WHERE CDCAMPO IN (1,2) AND DTINCLUSAO BETWEEN

    CASE WHEN @DTInclusaoInicial IS NULL THEN '19000101' ELSE @DTInclusaoInicial END

    AND

    CASE WHEN @DTInclusaoFinal IS NULL THEN '20500101' ELSE @DTInclusaoFinal END

    End

     

     

    Tente passar as datas sempre no formato YYYYMMDD (sem o hífen). A procedure acima receberá as datas. Se a data inicial não for passada, considerar-se-á a data de 01/01/1900. Se a data final não for passada, considerar-se-á a data de 01/01/2050.

     

    [ ]s,

     

    Gustavo

    terça-feira, 4 de novembro de 2008 13:30