SQLのインラインテーブル値関数内のIFelseIfロジックを使用して、そのロジックに基づいて包含テーブルを返そうとしています。しかし、IFElseIFブロックで構文上の問題が発生しています。助けてくれてありがとう。包含テーブルの列をパラメーター化できないため、ifelseステートメントを使用する必要があります。これがコードです。ありがとう。
私は得ています
メッセージ156、レベル15、状態1、プロシージャFullTextSearch、行17キーワード「IF」の近くの構文が正しくありません。
ALTER FUNCTION [dbo].[FullTextSearch]
(
@Columns nvarchar(100), @SearchPhrase nvarchar(100)
)
RETURNS TABLE
AS
RETURN
IF (@Columns='Title')
BEGIN
SELECT *
from projects as P inner join
containstable(PROJECTS, Title, @SearchPhrase) as K
on P.project_id = K.[KEY]
END
ELSE IF (@Columns='Project_Details')
BEGIN
SELECT *
from projects as P inner join
containstable(PROJECTS, Project_Details, @SearchPhrase) as K
on P.project_id = K.[KEY]
END
ELSE IF (@Columns='Contact_Info')
BEGIN
SELECT *
from projects as P inner join
containstable(PROJECTS, Contact_Info, @SearchPhrase) as K
on P.project_id = K.[KEY]
END
ELSE IF (@Columns='Project_Description')
BEGIN
SELECT *
from projects as P inner join
containstable(PROJECTS, Project_Description, @SearchPhrase) as K
on P.project_id = K.[KEY]
END
ELSE -- (@Columns='All')
BEGIN
SELECT *
from projects as P inner join
containstable(PROJECTS, (Title, Project_Details, Contact_Info, Project_Description), @SearchPhrase) as K
on P.project_id = K.[KEY]
END