USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Erro sql (clausula)
moncerra
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 19/12/2008 19:31 hs         
RECEBO UM @PARAM DA APLICAÇÃO E USO NO SEGUINTE SELECT
------------------------------------------------------------------------------------
select  
   
  Campanhas.CdCampanha,Campanhas.DsCampanha,           
  Comunicacao.CdTipoComunicacao,           
  Comunicacao.DsTipoComunicacao,           
  Campanhas.DtNovoClienteDe,Campanhas.DtNovoClienteAte,           
  Campanhas.DtEnvioMateriaisDe,Campanhas.DtEnvioMateriaisAte,           
  CASE Campanhas.InSituacaoCampanha       
   
  WHEN  '1' THEN 'ATIVO'           
  WHEN  '0' THEN 'INATIVO' END  AS Situacao,       
   
  CASE Campanhas.InCampanhaPorLote       
  WHEN  '1' THEN 'L'         
  WHEN  '0' THEN 'D' END  AS Tipo_Campanha       
  
 FROM    tb_VMSCardCPMCampanhas Campanhas (nolock)          
  
  INNER  join  tb_VMSCardCPMTiposComunicacao  Comunicacao (nolock)               
  on (Campanhas.CdTipoComunicacao  = Comunicacao.CdTipoComunicacao)           
   
  where  Campanhas.CdCampanha is not null            
  and Campanhas.InSituacaoCampanha = @ParamSituacao        
  and Campanhas.InStatus  ='1'
  
 AND  Campanhas.InCampanhaPorLote = (CASE WHEN @param  = '0' THEN  Campanhas.InCampanhaPorLote <> 1     ELSE  Campanhas.InCampanhaPorLote = '1'    END)
Gente , esta dando erro na clausula case erro:Line 58: Incorrect syntax near '<'.
Como posso resolver isso?
   
Sandro
não registrado
ENUNCIADA !
Postada em 19/12/2008 23:19 hs   
Olá,
 
O erro ocorre quando o banco vai avaliar a instrução CASE dentro da sua clausula Where. Você está tentando direcionar o critério de seleção através do CASE e isso não funciona.
Faça o seguinte: Cria uma variável @Sql do tipo nvarchar(MAX) e coloque dentro dela toda a sua instrução SQL, depois use clausulas IF para avaliar o @Param e concatenar os critérios apropriados. Veja, seria algo mais ou menos assim:
 
DECLARE @Sql nvarchar(MAX);
 
@Sql =
Olá,
 
O erro ocorre quando o banco vai avaliar a instrução CASE dentro da sua clausula Where. Você está tentando direcionar o critério de seleção através do CASE e isso não funciona.
Faça o seguinte: Cria uma variável @Sql do tipo nvarchar(MAX) e coloque dentro dela toda a sua instrução SQL, depois use clausulas IF para avaliar o @Param e concatenar os critérios apropriados. Veja, seria algo mais ou menos assim:
 
DECLARE @Sql nvarchar(MAX);
 
@Sql = "Select......... AND Campanhas.InCampanhaPorLote ';
If @Param = '0'
    @Sql = @Sql + '<>1'
Else
    @Sql = @Sql + '=1';
 
Isto é chamado de Query dinâmica.
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2026   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página