2012-07-04 23 views
0

我有这个疑问使用参数与FREETEXTTABLE改变输出

select top 10 * from FREETEXTTABLE([Venue], FullAddress, 'Canada') 

的正常工作,并产生结果;

现在如果我打电话从这个代码,并提供参数,它被改为

exec sp_executesql N'select top 10 * from FREETEXTTABLE([Venue], FullAddress, ''@p'')',N'@p nvarchar(4000)',@p='Canada' 

这无论如何不会产生任何结果。 据我所知,这2个查询应该产生相同的输出?或者FREETEXTTABLE对参数特别挑剔?

回答

0

在这种情况下,使用NVARCHAR参数时,不应添加单引号。请尝试以下代码:

EXEC sp_executesql N'select top 10 * from FREETEXTTABLE([Venue], FullAddress, @p)', 
        N'@p nvarchar(4000)', 
        @p='Canada' 
+0

但是,当我从代码执行查询时发生这种情况。 'EXEC sp_executesql'取自Profiler。 – Evgeni

+0

@Eugene - 那么它是一个问题,你如何执行你的查询*从代码*。可以肯定的是,上面的查询是否返回了预期的结果? – Lamak

+0

是的,这个“从FREETEXTTABLE([Venue],FullAddress,'加拿大')中选择最佳10 *”在管理工作室调用时工作正常 – Evgeni