web-dev-qa-db-fra.com

comment créer et appeler une fonction scalaire dans SQL Server 2008

J'ai créé une fonction scalaire, elle a été créée avec succès, mais lorsque j'appelle la fonction à l'aide de l'instruction select, elle indique un objet non valide, j'ai modifié la fonction, la commande de message s'est terminée correctement, mais lorsque j'appelle la fonction, Erreur. ci-dessous est la fonction que j'essaie d'appeler:

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

Et ci-dessous est la façon dont j'appelle la fonction:

SELECT * FROM dbo.fn_HomePageSlider(9, 3025)

Quelqu'un peut-il me dire ce qui ne va pas avec la fonction ci-dessus, lorsque j'obtiens la commande de message terminée avec succès.

46
Abbas

Votre appel fonctionne s'il s'agissait d'une fonction de table. Comme c'est une fonction scalaire, vous devez l'appeler comme suit:

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

Essayer

SELECT dbo.function (parameters)
5
Vijay Singh Rana

Ou vous pouvez simplement utiliser la commande PRINT à la place de la commande SELECT. Essaye ça,

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