2010-01-10 5 views
4

Je veux créer une procédure stockée pour faire une recherche par mot clé combiné utilisant CONTIENT, quelque chose comme ci-dessous:Créer une procédure stockée avec CONTIENT dans SQL Server 2008

SELECT theContent 
FROM FtsTest 
WHERE CONTAINS 
    (theContent, 
    ' FORMSOF (INFLECTIONAL, keyword1) AND FORMSOF (INFLECTIONAL, keyword2)'); 

et il nombre de mots clés peut varier, j'ai donc essayé pour passer la totalité de la clause 'FORMSOF ... AND FORMSOF .....' comme paramètre, déclarant le paramètre comme nvarchar (max), mais il ne me laissera pas le faire, en disant Le type d'argument "nvarchar (max) "est invalide pour l'argument 2 de" CONTAINS ".

Alors, est-il un moyen de le faire fonctionner avec le sp? Merci!

Répondre

1

Vous pouvez construire dynamiquement et passer dans les mots-clés en tant que paramètres. L'exécution avec sp_executesql vous permet de profiter du cache de plan de requête, tel que décrit dans les réponses à cette question:

Alternative to executing dynamic sql

Vous devrez peut-être faire attention à cette question, cependant, qui se rapporte au paramètre renifler et requêtes complètes de texte:

http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=510118

2

cela semble stupide, mais en utilisant nvarchar (500) au lieu de nvarchar (max), Sql Server accepte allègrement et fonctionne très bien. Toujours en train d'essayer d'avoir un aperçu de sp_executesql, merci.

Questions connexes