【问题标题】:Stored Procedure Parameter with FORMSOF and Thesaurus (SQL Server 2008 R2 SP2)带有 FORMSOF 和同义词库的存储过程参数 (SQL Server 2008 R2 SP2)
【发布时间】:2014-06-05 20:02:37
【问题描述】:

我已经创建了一个存储过程

CREATE PROCEDURE [dbo].[GetTableColumns]
       @search_phrase varchar(100)
AS
BEGIN   
    SET NOCOUNT ON;

    SELECT * 
    from SearchTableColumn stc 
    where contains(*, 'FORMSOF(Thesaurus, @search_phrase)') 
    order by stc.weight desc
END

在 SQL Server 2008 R2 SP2 中创建的存储过程没有任何问题。如果我像这样在 SQL Server Management Studio 中执行存储过程:

exec GetTableColumns 'instrument'

我没有返回任何记录。

但是,如果我使用以下 SQL 查询数据库,

SELECT * 
from SearchTableColumn stc 
where contains(*, 'FORMSOF(Thesaurus, instrument)') 
order by stc.weight desc

我收到了返回的记录。

所以我想知道存储过程中是否缺少某些东西会阻止返回记录?

提前致谢。

【问题讨论】:

    标签: sql stored-procedures sql-server-2008-r2


    【解决方案1】:

    您正在表中搜索文字 'FORMSOF(Thesaurus,@search_phrase)'

    尝试使用传入的参数设置搜索值:

    CREATE PROCEDURE [dbo].[GetTableColumns]
    @search_phrase varchar(100)
    AS
    BEGIN   
        SET NOCOUNT ON;
    
        Declare @search varchar(120) = 'FORMSOF(Thesaurus,' + @search_phrase + ')' 
    
        SELECT  * 
        from    SearchTableColumn stc 
        where   contains(*, @search) 
        order by stc.weight desc
    
    END
    

    【讨论】:

      猜你喜欢
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 2018-09-21
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      相关资源
      最近更新 更多