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.
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
Versuchen
SELECT dbo.function (parameters)
Oder Sie können einfach den Befehl PRINT
anstelle des Befehls SELECT
verwenden. Versuche dies,
PRINT dbo.fn_HomePageSlider(9, 3025)