Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MarKteus

Como entender esse CASE no Where ?

Recommended Posts

Bom dia a todos

 

Me deparei com a seguinte linha em um bloco de proc SQL

 

WHERE 1 = CASE WHEN @VALOR=TB.VALOR AND @VALOR2 = TB.VALOR2 THEN 2 ELSE 0 :ermm:

 

Como se interpreta essa linha, do que se trata esse Where ? O que o 1 no começo do where ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

parece sacanagem ...

 

CASE WHEN @VALOR=TB.VALOR AND @VALOR2 = TB.VALOR2 THEN 2 ELSE 0

só poderá retornar 2 ou 0

 

WHERE 1 = CASE WHEN @VALOR=TB.VALOR AND @VALOR2 = TB.VALOR2 THEN 2 ELSE 0

 

só será verdade quando 1 for igual a 2 ou igual a 0, ou seja NUNCA.

Compartilhar este post


Link para o post
Compartilhar em outros sites

parece sacanagem ...

 

CASE WHEN @VALOR=TB.VALOR AND @VALOR2 = TB.VALOR2 THEN 2 ELSE 0

só poderá retornar 2 ou 0

 

WHERE 1 = CASE WHEN @VALOR=TB.VALOR AND @VALOR2 = TB.VALOR2 THEN 2 ELSE 0

 

só será verdade quando 1 for igual a 2 ou igual a 0, ou seja NUNCA.

 

 

que P.O.G hein.... já vi algo parecido em clientes, mas não tão "complexos" :P

 

Pode ser que esteja ali para alguma validacao ou debug....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então é possível no WHERE checar 1 = 1 ou 1 = 2 que seja,,,

De um lado não deveria haver @var = 1 ou tb.campo = 1 ? sei lá,... :huh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

A condição não faz sentido SEMPRE será falsa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem que dar uma analisada na proc toda e ver este contexto.

 

Ainda acho que esta lá pra DEBUG, já que SEMPRE será falso!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um daqueles casos em que o Capitão Nascimento e seu saco plástico resolveriam com o desenvolvedor ...

 

tolerancia_zero001_capitao_nascimento.jpg

 

-Por que 'cê fez esta síntaxe ? Cadê a p0rr@ da especificação ?

-Fala !

 

:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

como acabei de postar no seu outro post:

 

"de mais detalhes do seu ambiente", esta muito vago.... essa procedure esta em que versao do SQL? Tem que retornar algo? Não esta dentro de um if ou while não?

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.