none
Erro inistente no IF RRS feed

  • 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!
    domingo, 22 de julho de 2007 12:01

Respostas

  • Ola Gisele, tente retirar o Then e Fazer desta forma

     

    IF ((SELECT vitrine FROM tbOferta Where [IdOferta] = @IdOferta)= 0)

    BEGIN
    @Vitrine = 1

    END
    ELSE

    BEGIN
    @Vitrine = 0

    END

     

    Espero ter ajudado

    domingo, 22 de julho de 2007 14:33
  •  

    Olá Gisely,

     

    No seu código só sobrou o THEN e faltou os SETs, desta forma:

     

    Code Snippet
    IF (SELECT vitrine FROM tbOferta Where [IdOferta] = @IdOferta)= 0 
    SET @Vitrine = 1
    ELSE
    SET @Vitrine = 0

     

     

    E 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] = @IdOferta

     

    Pessoalmente, 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

     

     

    domingo, 22 de julho de 2007 16:51

Todas as Respostas

  • domingo, 22 de julho de 2007 14:15
  • Ola Gisele, tente retirar o Then e Fazer desta forma

     

    IF ((SELECT vitrine FROM tbOferta Where [IdOferta] = @IdOferta)= 0)

    BEGIN
    @Vitrine = 1

    END
    ELSE

    BEGIN
    @Vitrine = 0

    END

     

    Espero ter ajudado

    domingo, 22 de julho de 2007 14:33
  •  

    Olá Gisely,

     

    No seu código só sobrou o THEN e faltou os SETs, desta forma:

     

    Code Snippet
    IF (SELECT vitrine FROM tbOferta Where [IdOferta] = @IdOferta)= 0 
    SET @Vitrine = 1
    ELSE
    SET @Vitrine = 0

     

     

    E 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] = @IdOferta

     

    Pessoalmente, 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

     

     

    domingo, 22 de julho de 2007 16:51
  • Caramba pessoal muito obrigado pela ajuda, consegui arrumar o erro!!!
    mais uma vez BRIGADÃO!!!
    domingo, 22 de julho de 2007 17:05