locked
Duvida Procedure RRS feed

  • Pergunta

  • Pessoal podem me ajudar com esta procedure, se eu executar o select separado o mesmo me retorna resultado porem executando a procedure a mesma me retorna um valor = 0 e não o status do pedido.

    Select ele passa na primeira query e identifica se encontra o pedido se não passa pelo segundo



    ALTER PROCEDURE [dbo].[sp_BuscaPedido]


        @busca nvarchar(50)



    AS
    BEGIN

    declare  @perc char(1)

    set @perc = '%'


    if exists (select * from tempdb..sysobjects where name = '##Tab1')  
          drop table ##Tab1
    else if exists (select * from tempdb..sysobjects where name = '##Tab3')  
          drop table ##Tab3


    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 = ''@busca'''
    )
    ))

    BEGIN

    SELECT * into ##Tab1
    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 = ''@busca'''
    )

    END

    ELSE

    BEGIN


    SELECT * into ##tab3
    FROM   OPENROWSET('SQLNCLI',
                      'ESPANHA';'teste';'teste',
    'select loginttabela
    from log_integracao
    where loginttabela like ''@perc + @busca  + @perc'''
    )

    Print 'Pedido Não encontrado'

    END

    END

    if (exists(select * from tempdb..sysobjects where name = '##Tab1') )
            select * from ##tab1


                else
                      begin
                            select * from ##tab3


    END

    segunda-feira, 23 de julho de 2012 15:23

Todas as Respostas

  • Renata,

    Em qual dos Selects que esta sendo retornado Zero?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    segunda-feira, 23 de julho de 2012 15:54
  • No segundo apenas qdo executado na procedure
    segunda-feira, 23 de julho de 2012 17:56
  • Renata... o problema está nas tuas aspas simples.

    substitua o ''@perc + @busca  + @perc'''

    por ''''@perc + @busca  + @perc'''''

    A concatenação da string que você está fazendo, fica apenas %@busca%, sendo que vc quer que fique '%@busca'

    Veja se isso resolve...

    um print nesse teu select pode ajudar a te orientar melhor.

    • Sugerido como Resposta Harley Araujo quarta-feira, 25 de julho de 2012 20:48
    quarta-feira, 25 de julho de 2012 19:58
  • Eu substitui conforme sua orientação

    where loginttabela like ''''@perc + @busca + @perc'''''

    porem me deu o seguinte erro:

    Msg 8180, Level 16, State 1, Line 1
    Statement(s) could not be prepared.
    Msg 102, Level 15, State 1, Line 3
    Incorrect syntax near '@perc'.
    quarta-feira, 1 de agosto de 2012 18:06