Inquiridor
Duvida Procedure

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
ENDsegunda-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 proceduresegunda-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