Usuário com melhor resposta
Erro inistente no IF

Pergunta
-
Bom dia pessoal,
Estou tentando criar uma storedProcedure aqui, porém estou com um erro no THEN do IF e não consigo ver o que estou fazendo de errado? já tentei mudar de várias formas o IF, já tentei colocar o SELECT separado, colocar BEGIN e END, mas sempre me retorna o mesmo erro...
(Msg 156, Level 15, State 1, Procedure spVitrineAlterar, Line 18 Incorrect syntax near the keyword 'THEN')
segue abaixo uma parte do cód.:
...
IF (SELECT vitrine FROM tbOferta Where [IdOferta] = @IdOferta)= 0 THEN
@Vitrine = 1
ELSE
@Vitrine = 0
...
alguém saberia me dar uma luz???
brigadão,
Gisely!
Respostas
-
-
Olá Gisely,
No seu código só sobrou o THEN e faltou os SETs, desta forma:
Code SnippetIF (SELECT vitrine FROM tbOferta Where [IdOferta] = @IdOferta)= 0
SET @Vitrine = 1
ELSE
SET @Vitrine = 0E também é possível fazer de uma forma mais simples, economizando em linhas de código e evitando desvios de código, desta maneira:
Code Snippet
SELECT
@Vitrine = CASE vitrine
WHEN 0 THEN 1
ELSE 0
END
FROM tbOferta Where [IdOferta] = @IdOfertaPessoalmente, gosto mais do segundo exemplo. Principalmente por ser bom evitarmos a utilização de IF nos nossos códigos.
Qualquer problema que tiver, pode retornar.
Abraço
Todas as Respostas
-
Gisely,
dê uma olhada neste post:
http://forums.microsoft.com/MSDN-BR/ShowPost.aspx?PostID=1890479&SiteID=21
boa sorte. -
-
Olá Gisely,
No seu código só sobrou o THEN e faltou os SETs, desta forma:
Code SnippetIF (SELECT vitrine FROM tbOferta Where [IdOferta] = @IdOferta)= 0
SET @Vitrine = 1
ELSE
SET @Vitrine = 0E também é possível fazer de uma forma mais simples, economizando em linhas de código e evitando desvios de código, desta maneira:
Code Snippet
SELECT
@Vitrine = CASE vitrine
WHEN 0 THEN 1
ELSE 0
END
FROM tbOferta Where [IdOferta] = @IdOfertaPessoalmente, gosto mais do segundo exemplo. Principalmente por ser bom evitarmos a utilização de IF nos nossos códigos.
Qualquer problema que tiver, pode retornar.
Abraço
-