46 votes

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

J'ai créé une fonction Scalaire, il a été créé avec succès, mais quand j'appelle la fonction à l'aide de l'instruction select, il est dit d'objet non valide, j'ai modifié la fonction, j'ai eu le message de commande s'est terminée correctement, mais lorsque j'appelle la fonction, j'obtient la même erreur. ci-dessous est la fonction que j'essaie de l'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 je suis l'appel de la fonction:

SELECT * FROM dbo.fn_HomePageSlider(9, 3025)

Quelqu'un peut me dire quel est le problème avec la fonction ci-dessus, que je reçois un message de la commande s'est terminée correctement.

91voto

Akhil Points 4181

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

 SELECT dbo.fn_HomePageSlider(9, 3025) AS MyResult
 

5voto

Vijay Singh Rana Points 359

Essayer

 SELECT * from dbo.function (parameters)
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X