Usuário com melhor resposta
Query pedir "valor" para determinados campos ao usuário

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.
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 SnippetCreate Procedure SP_Consulta @DTInclusaoInicial DateTime, @DTInclusaoFinal DateTime
As
Begin
SELECT
*
FROM
TABELA_X
WHERE
CDCAMPO IN (1,2) AND
DTINCLUSAO BETWEEN @DTInclusaoInicial AND @DTInclusaoFinalEnd
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 SnippetCreate Procedure SP_Consulta @DTInclusaoInicial DateTime, @DTInclusaoFinal DateTime
As
Begin
SELECT
*
FROM
TABELA_X
WHERE
CDCAMPO IN (1,2) AND
DTINCLUSAO BETWEEN @DTInclusaoInicial AND @DTInclusaoFinalEnd
-
-
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 SnippetCreate
Procedure SP_Consulta@DTInclusaoInicial
DateTime = null,@DTInclusaoFinal
DateTime = nullAs
Begin
SELECT
* FROM TABELA_XWHERE
CDCAMPO IN (1,2) AND DTINCLUSAO BETWEENCASE
WHEN @DTInclusaoInicial IS NULL THEN '19000101' ELSE @DTInclusaoInicial ENDAND
CASE
WHEN @DTInclusaoFinal IS NULL THEN '20500101' ELSE @DTInclusaoFinal ENDEnd
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