如何在sql server 2008中创建和调用标量函数

时间:2011-12-23 18:58:20

标签: sql-server-2008 function call scalar

我已经创建了一个标量函数,它是成功创建的,但是当我使用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)

任何人都可以告诉我上述功能有什么问题,因为我已成功完成消息命令。

3 个答案:

答案 0 :(得分:90)

如果是表格值函数,您的通话就会起作用。由于它是标量函数,您需要将其称为:

SELECT dbo.fn_HomePageSlider(9, 3025) AS MyResult

答案 1 :(得分:5)

尝试

SELECT dbo.function (parameters)

答案 2 :(得分:1)

或者您可以简单地使用PRINT命令而不是SELECT命令。试试这个,

PRINT dbo.fn_HomePageSlider(9, 3025)