2013-02-20 3 views
1

Я пытаюсь выполнить sp_executesql с полнотекстовым поиском в нем.sp_executesql вместе с полнотекстовым поиском и formsof inflectional

Этот запрос работал нормально.

exec sp_executesql 
    N'SELECT TOP (@p0) this_.org_id as y0_, this_.u_Name as y1_, this_.Category as y2_ FROM Organization this_ 
    WHERE contains (this_.u_Name,@p1)' 
    ,N'@p0 int,@p1 nvarchar(4000)', 
    @p0=1000,@p1=N'service' 

Но я должен был добавить formsof флективным для вариаций слов, а затем он выглядит как параметр @ p1 теперь пустой и запрос не возвращать никаких результатов. Любая причина ? Если я заменю @ p1 на фактическое слово «сервис», все будет хорошо.

exec sp_executesql 
N'SELECT TOP (@p0) this_.org_id as y0_, this_.u_Name as y1_, this_.Category as y2_ FROM Organization this_ 
WHERE contains (this_.u_Name,''formsOf(inflectional, @p1)'')' 
,N'@p0 int,@p1 nvarchar(4000)', 
@p0=1000,@p1=N'service' 

ответ

0

Внутри formsOf() ваша переменная @ p1 превращается в строку. Попробуйте следующее:

exec sp_executesql 
N'declare @ft nvarchar(4000) 
set @ft = ''formsof(inflectional, '' + quotename(@p1, ''"'') + '')'' 
SELECT TOP (@p0) this_.org_id as y0_, this_.u_Name as y1_, this_.Category as y2_ FROM Organization this_ 
WHERE contains (this_.u_Name,@ft)' 
,N'@p0 int,@p1 nvarchar(4000)', 
@p0=1000,@p1=N'service'