web-dev-qa-db-ja.com

SQL Server 2008でスカラー関数を作成して呼び出す方法

スカラー関数を作成しましたが、正常に作成されましたが、selectステートメントを使用して関数を呼び出すと、無効なオブジェクトと表示され、関数を変更し、メッセージコマンドが正常に完了しましたが、関数を呼び出すと同じになりますエラー。以下は私が呼び出しようとしている関数です:

ALTER FUNCTION [dbo].[fn_HomePageSlider]
(
    @PortalID int,
    @ArticleID int
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
    DECLARE @HTML NVARCHAR(MAX)
    SET @HTML = '';
    Declare @Title varchar(1000)
    Select @Title= Title from CrossArticle_Article c where c.Id=@ArticleID
    Select @HTML = @HTML + '<div class="homeSlider">
                                <div class="text">'+ISNULL(c.Title,'')+'</div>
                            </div>'
    FROM CrossArticle_Article c INNER JOIN crossarticle_url U ON U.articleid=c.Id
    INNER JOIN FREETEXTTABLE(CrossArticle_Article,TITLE,@TITLE) as INDEX_TBL 
    ON INDEX_TBL.[KEY]=c.Id
    WHERE INDEX_TBL.RANK >= 75 AND 
    c.Id<>@ArticleID AND
    c.PortalId=@PortalID
    GROUP BY c.Title,U.url,INDEX_TBL.RANK
    ORDER BY INDEX_TBL.RANK DESC

    RETURN @HTML;
END

そして、以下は私が関数を呼び出す方法です:

SELECT * FROM dbo.fn_HomePageSlider(9, 3025)

メッセージコマンドが正常に完了すると、誰でも上記の機能の何が問題なのか教えてくれますか。

46
Abbas

テーブル値関数であれば、呼び出しは機能します。そのスカラー関数なので、次のように呼び出す必要があります。

SELECT dbo.fn_HomePageSlider(9, 3025) AS MyResult
90
Akhil

試して

SELECT dbo.function (parameters)
5

または、PRINTコマンドの代わりに、単にSELECTコマンドを使用できます。これを試して、

PRINT dbo.fn_HomePageSlider(9, 3025)
1
Adnan Sharif