Usuário com melhor resposta
Tratamento no select, ocorre erro com o if

Pergunta
-
Bom dia,
Tenho uma pagina e faço o carregamento da minha GridView através de uma function, que me retorna todas as entradas de um determinado produto, sendo que é passado o id por queryString.
Mais sendo assim, ela me lista "todas" entradas, ordenadas por data de emissão DESC.Fui orientado a fazer um check box que por default ele vem checkado, Caso ele esteja checkado,
chkUltimosCemRegistros = 1, trazer apenas os 100 ultimos registros mais recentes "DESC".
A duvida é um seguinte:
Passei um novo parâmetro na fuction,
Como faço para fazer um verificação no select por exemplo tentei fazer assim:
DECLARE @isLimitarPesquisa BIT,
if @isLimitarPesquisa = 0
begin
select top(100)*
from Cliente
end
else
begin
selecT *
from Cliente
Endwhere .,.........
So que por alguns motivo o "if" fica como estivesse errado.
Algum sabe como posso fazer para caso o parâmetro seja 1 executar um select caso seja 0 executar outro select,
fiz de uma forma que era deixando tudo em uma variável como string e depois executava essa linha,deu certo mais por questão de desempenho não ficou legal e por ser uma funtion e não procedure.Obrigado,
- Editado Ariel_1234 segunda-feira, 24 de fevereiro de 2014 13:51 Erro de DIgitação
Respostas
-
Ariel, qual o erro que esta retornando para voce ? tente fazer assim :
DECLARE @isLimitarPesquisa BIT if @isLimitarPesquisa = 0 begin select top(100)* from Cliente end if @isLimitarPesquisa <> 0 begin selecT * from Cliente End
Alexandre Matayosi Conde Mauricio.
- Marcado como Resposta Ariel_1234 segunda-feira, 24 de fevereiro de 2014 15:04
Todas as Respostas
-
Ariel, qual o erro que esta retornando para voce ? tente fazer assim :
DECLARE @isLimitarPesquisa BIT if @isLimitarPesquisa = 0 begin select top(100)* from Cliente end if @isLimitarPesquisa <> 0 begin selecT * from Cliente End
Alexandre Matayosi Conde Mauricio.
- Marcado como Resposta Ariel_1234 segunda-feira, 24 de fevereiro de 2014 15:04
-
Ariel,
O conceito que você estruturou sua condição esta correto, porém você deve incluir à cláusula WHERE em cada consulta também. Veja um modelo abaixo:
DECLARE @isLimitarPesquisa BIT, if @isLimitarPesquisa = 0 BEGIN select top(100) * from Cliente -- where ... END else BEGIN selecT * from Cliente -- where... END
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil" -
Ariel,
Fiz apenas um pequeno teste com essa parte de codigo que você passou, só retirando a parte do select e está funcionando normalmente.
DECLARE @isLimitarPesquisa BIT
SET @isLimitarPesquisa = 1
if @isLimitarPesquisa = 0
begin
PRINT 'Entrou no IF'
end
else
begin
PRINT 'Entrou no ELSE'
EndQual mensagem de erro você está encontrando?
Não seria melhor tratar isso na aplicação ao inves de uma function? Ou até mesmo usar uma procedure?
Att,
Marcos Freccia [MTA|MCTS|MCITP|MCT SQL Server 2008]
Blog|Twitter
Assine também os feeds clicando aqui -
-
Pessoal quando, coloco o else aparece dessa forma,
Erro:Mensagem 156, Nível 15, Estado 1, Linha 2
Sintaxe incorreta próxima à palavra-chave 'if'.
Mensagem 137, Nível 15, Estado 2, Linha 2
É necessário declarar a variável escalar "@isLimitarPesquisa".
Mensagem 156, Nível 15, Estado 1, Linha 8
Sintaxe incorreta próxima à palavra-chave 'else'.Utilizei da forma que o "Alexandre Matayosi Conde Mauricio." sugeriu de usar 2 if e deu certo.
Caso saiba o motivo do erro, e não for atrapalhar ficaria grato em saber o motivo do mesmo
Obrigado pela atenção e paciencia.
-
-