none
Erro de concatenação RRS feed

  • Pergunta

  • Pessoal,

    Eu tenho o select abaixo

    Porem ao tentar fazer a concatenação abaixo da um erro

    IF(EXISTS(

    SELECT *
    FROM   OPENROWSET('SQLNCLI', 'ESPANHA';'teste';'teste',
            'SELECT
               p1.pedvendanum + ' ' + p.pedvendastatdescr
                    FROM  ped_venda1 p1
                     INNER JOIN ped_venda p
                         ON p1.pedvendanum = p.pedvendanum
    WHERE userpedvendacrm = ''PED-13334-B8D8D1'''
    )

    ))
    BEGIN

    SELECT *
    FROM   OPENROWSET('SQLNCLI',
                      'ESPANHA';'teste';'teste',
        'SELECT
                p1.pedvendanum + ' ' + p.pedvendastatdescr
                    FROM  ped_venda1 p1          
                     INNER JOIN ped_venda p
                      ON p1.pedvendanum = p.pedvendanum
    WHERE userpedvendacrm = ''PED-13334-B8D8D1'''
    )
    end

    ELSE

    BEGIN

    SELECT *

    FROM   OPENROWSET('SQLNCLI',
                      'ESPANHA';'teste';'teste',
                        'select
                            LogIntTabela
                                from log_integracao where loginttabela like ''%PED-13334-B8D8D1%'''
    )

    Print 'Pedido Não encontrado'

    END

    Msg 8180, Level 16, State 1, Line 1
    Statement(s) could not be prepared.
    Msg 105, Level 15, State 1, Line 6
    Unclosed quotation mark after the character string ''.
    Msg 102, Level 15, State 1, Line 6
    Incorrect syntax near '-'.

    OBS: se eu colocar apenas a concatenação comum sem espaço funciona   p1.pedvendanum + p.pedvendastatdescr

    quinta-feira, 21 de junho de 2012 17:49

Respostas

  • Renata,

    O erro ocorre por conta dos apóstrofes que estão faltando, por exemplo:

    IF(EXISTS(
     
    SELECT *
     FROM   OPENROWSET('SQLNCLI', 'ESPANHA';'teste';'teste',
             'SELECT 
               p1.pedvendanum + '' '' + p.pedvendastatdescr
                     FROM  ped_venda1 p1 
                     INNER JOIN ped_venda p 
                         ON p1.pedvendanum = p.pedvendanum 
    WHERE userpedvendacrm = ''PED-13334-B8D8D1'''
     )
     
    ))
     BEGIN
     
    SELECT *
     FROM   OPENROWSET('SQLNCLI',
                       'ESPANHA';'teste';'teste',
         'SELECT 
                p1.pedvendanum + '' '' + p.pedvendastatdescr
                     FROM  ped_venda1 p1          
                      INNER JOIN ped_venda p 
                      ON p1.pedvendanum = p.pedvendanum 
    WHERE userpedvendacrm = ''PED-13334-B8D8D1'''
     ) 
    end
     
    ELSE
     
    BEGIN
     
    SELECT *
     
    FROM   OPENROWSET('SQLNCLI',
                       'ESPANHA';'teste';'teste',
                         'select 
                            LogIntTabela
                                 from log_integracao where loginttabela like ''%PED-13334-B8D8D1%'''
     )
     
    Print 'Pedido Não encontrado'
     
    END
    Mas você pode também usar o exemplo que o Guilherme postou.

    []'s
    Philipe Souza
    E-mail: Philipe.s.souza@hotmail.com


    • Editado Philipe Souza quinta-feira, 21 de junho de 2012 19:18
    • Sugerido como Resposta Heloisa Pires segunda-feira, 25 de junho de 2012 14:48
    • Marcado como Resposta Renata Cardoso segunda-feira, 25 de junho de 2012 18:34
    quinta-feira, 21 de junho de 2012 19:17

Todas as Respostas

  • Tenta assim:

    IF(EXISTS(
    
    SELECT *
    FROM   OPENROWSET('SQLNCLI', 'ESPANHA';'teste';'teste',
            'SELECT p1.pedvendanum ,p.pedvendastatdescr
                    FROM  ped_venda1 p1 
                     INNER JOIN ped_venda p 
                         ON p1.pedvendanum = p.pedvendanum 
    WHERE userpedvendacrm = ''PED-13334-B8D8D1'''
    )
    
    ))
    BEGIN
    
    SELECT *
    FROM   OPENROWSET('SQLNCLI',
                      'ESPANHA';'teste';'teste',
        'SELECT 
                p1.pedvendanum , p.pedvendastatdescr
                    FROM  ped_venda1 p1          
                     INNER JOIN ped_venda p 
                      ON p1.pedvendanum = p.pedvendanum 
    WHERE userpedvendacrm = ''PED-13334-B8D8D1'''
    ) 
    end
    
    ELSE
    
    BEGIN
    
    SELECT *
    
    FROM   OPENROWSET('SQLNCLI',
                      'ESPANHA';'teste';'teste',
                        'select 
                            LogIntTabela
                                from log_integracao where loginttabela like ''%PED-13334-B8D8D1%'''
    )
    
    Print 'Pedido Não encontrado'
    
    END

    quinta-feira, 21 de junho de 2012 18:13
  • Mas eu preciso concatenar os campos
    quinta-feira, 21 de junho de 2012 18:27
  • Tenta assim:

    IF(EXISTS(
    
    SELECT *
    FROM   OPENROWSET('SQLNCLI', 'ESPANHA';'teste';'teste',
            'SELECT concat(p1.pedvendanum ,p.pedvendastatdescr)
                    FROM  ped_venda1 p1 
                     INNER JOIN ped_venda p 
                         ON p1.pedvendanum = p.pedvendanum 
    WHERE userpedvendacrm = ''PED-13334-B8D8D1'''
    )
    
    ))
    BEGIN
    
    SELECT *
    FROM   OPENROWSET('SQLNCLI',
                      'ESPANHA';'teste';'teste',
        'SELECT 
                concat(p1.pedvendanum , p.pedvendastatdescr)
                    FROM  ped_venda1 p1          
                     INNER JOIN ped_venda p 
                      ON p1.pedvendanum = p.pedvendanum 
    WHERE userpedvendacrm = ''PED-13334-B8D8D1'''
    ) 
    end
    
    ELSE
    
    BEGIN
    
    SELECT *
    
    FROM   OPENROWSET('SQLNCLI',
                      'ESPANHA';'teste';'teste',
                        'select 
                            LogIntTabela
                                from log_integracao where loginttabela like ''%PED-13334-B8D8D1%'''
    )
    
    Print 'Pedido Não encontrado'
    
    END

    • Sugerido como Resposta Heloisa Pires segunda-feira, 25 de junho de 2012 14:48
    quinta-feira, 21 de junho de 2012 18:38
  • Renata,

    O erro ocorre por conta dos apóstrofes que estão faltando, por exemplo:

    IF(EXISTS(
     
    SELECT *
     FROM   OPENROWSET('SQLNCLI', 'ESPANHA';'teste';'teste',
             'SELECT 
               p1.pedvendanum + '' '' + p.pedvendastatdescr
                     FROM  ped_venda1 p1 
                     INNER JOIN ped_venda p 
                         ON p1.pedvendanum = p.pedvendanum 
    WHERE userpedvendacrm = ''PED-13334-B8D8D1'''
     )
     
    ))
     BEGIN
     
    SELECT *
     FROM   OPENROWSET('SQLNCLI',
                       'ESPANHA';'teste';'teste',
         'SELECT 
                p1.pedvendanum + '' '' + p.pedvendastatdescr
                     FROM  ped_venda1 p1          
                      INNER JOIN ped_venda p 
                      ON p1.pedvendanum = p.pedvendanum 
    WHERE userpedvendacrm = ''PED-13334-B8D8D1'''
     ) 
    end
     
    ELSE
     
    BEGIN
     
    SELECT *
     
    FROM   OPENROWSET('SQLNCLI',
                       'ESPANHA';'teste';'teste',
                         'select 
                            LogIntTabela
                                 from log_integracao where loginttabela like ''%PED-13334-B8D8D1%'''
     )
     
    Print 'Pedido Não encontrado'
     
    END
    Mas você pode também usar o exemplo que o Guilherme postou.

    []'s
    Philipe Souza
    E-mail: Philipe.s.souza@hotmail.com


    • Editado Philipe Souza quinta-feira, 21 de junho de 2012 19:18
    • Sugerido como Resposta Heloisa Pires segunda-feira, 25 de junho de 2012 14:48
    • Marcado como Resposta Renata Cardoso segunda-feira, 25 de junho de 2012 18:34
    quinta-feira, 21 de junho de 2012 19:17