2010-08-24 13 views
5

SET @whereCond = @whereCond + 'VE adı GİBİ '' %' '+ @name + '' %''Sp_executesql içinde GİBİ kullanma

burada yanlış bir şey var mı? Koşulları oluşturduktan sonra, sp_executesql ile yürütüyorum, ama bir şey buldum. Aynı şeyi sp olmadan seçtiğimde, sorun yok.

SPIKE sp_executesql içinde nasıl kullanılır? Bazı örnekler getirebilir misiniz lütfen?

Teşekkür ederiz.

GÜNCELLEME

declare @name nvarchar(50) 

set @name = 'a' 

SELECT * 
    FROM Tbl_Persons WHERE 1 = 1 AND lastname LIKE '%a%' 

exec sp_executesql 
    N'SELECT * 
    FROM Tbl_Persons WHERE 1 = 1 AND lastname LIKE ''%@name%''', 
    N'@name nvarchar(50)', 
    @[email protected] 

İlk sorgu değerleri döndürür, ikincisi şey döndürmez.

fark nedir? Benim için

cevap

14

aşağıdaki eserlerini

declare @name varchar(50) 

set @name = 'WAITFOR' 


exec sp_executesql 
    N'select * from sys.messages WHERE text LIKE ''%'' + @name + ''%''', 
    N'@name varchar(50)', 
    @[email protected] 

Sorun başka yerde yalan gerektiğini düşünüyorum.

Düzenleme: güncellemenin ardından bunu sana Senaryonu kontrol ettik ve işe yarıyor fiili alt dize @name

+0

içeren metin için arıyorsunuz haliyle

exec sp_executesql N'SET @name = ''%'' + @name + ''%''; SELECT * FROM Tbl_Persons WHERE 1 = 1 AND lastname LIKE @name', N'@name nvarchar(50)', @[email protected] 

kullanmak gerekir, ama benim çalışmıyor Sorumu düzenledim. teşekkür ederim. – hgulyan

+1

Çalışmaları. Yardım için teşekkürler. – hgulyan

İlgili konular