КРЕСТ ПРИМЕНИТЕ БЕСПЛАТНО - PullRequest
4 голосов
/ 14 сентября 2010

MS SQL Server 2005: таблица1 имеет полнотекстовый индекс. Я хочу выполнить несколько запросов на поиск в свободном тексте за один запрос, но две попытки у меня закончились неудачей. любая помощь будет оценена, спасибо! постскриптум готов обновить до sql 2008, если это исправит:)

CREATE FUNCTION fnt_FullTextSearch ( @s NVARCHAR(4000) )
RETURNS TABLE
AS
  RETURN
    ( SELECT [key], [rank]
        FROM FREETEXTTABLE(table1, *, @s) )

DECLARE @terms TABLE ( term VARCHAR(MAX) )
INSERT INTO @terms VALUES ( 'flu' )
INSERT INTO @terms VALUES ( 'acid' )

-- The inline function "..." cannot 
-- take correlated parameters or subqueries 
-- because it uses a full-text operator.
SELECT ft.[key], ft.[rank]
    FROM @terms 
        CROSS APPLY fnt_FullTextSearch(term) ft

--syntax error on term
SELECT ft.[key], ft.[rank]
    FROM @terms 
        CROSS APPLY FREETEXTTABLE(table1, *, term)

1 Ответ

0 голосов
/ 29 января 2011

Может, потому что вы пропустили псевдоним во втором утверждении?

SELECT FT.[key], FT.[rank]
    FROM @terms 
        CROSS APPLY FREETEXTTABLE(table1, *, term) FT

Звучит банально ... но я не вижу другой причины, по которой он должен потерпеть неудачу!

...