web-dev-qa-db-de.com

Erstellen und Aufrufen der Skalarfunktion in SQL Server 2008

Ich habe eine skalare Funktion erstellt, die erfolgreich erstellt wurde. Wenn ich die Funktion jedoch mit der select-Anweisung aufrufe, heißt es, dass das Objekt ungültig ist. Ich habe die Funktion geändert. Der Befehl message wurde erfolgreich ausgeführt. Wenn ich die Funktion aufrufe, erhalte ich dasselbe Error. Unten ist die Funktion, die ich versuche aufzurufen:

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 [email protected]
    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
    [email protected]
    GROUP BY c.Title,U.url,INDEX_TBL.RANK
    ORDER BY INDEX_TBL.RANK DESC

    RETURN @HTML;
END

Und unten ist die Art, wie ich die Funktion aufrufe:

SELECT * FROM dbo.fn_HomePageSlider(9, 3025)

Kann mir jemand sagen, was mit der obigen Funktion nicht stimmt, wenn ich den Nachrichtenbefehl erfolgreich abgeschlossen habe.

46
Abbas

Ihr Anruf funktioniert, wenn es sich um eine Tabellenwertfunktion handelt. Da es sich um eine Skalarfunktion handelt, müssen Sie sie folgendermaßen aufrufen:

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

Versuchen

SELECT dbo.function (parameters)
5

Oder Sie können einfach den Befehl PRINT anstelle des Befehls SELECT verwenden. Versuche dies,

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