如何在sql server 2008中创建和调用标量函数
我创建了一个标量函数,它已成功创建,但是当我使用 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)
当我成功完成消息命令时,任何人都可以告诉我上述函数有什么问题吗?
I have created a Scalar Functions, it was created successfully, but when I call the function using select statement, it says invalid object, I altered the function, I got the message command completed successfully, but when I call the function, I gets same error. below is the function I am trying to call:
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
And below is the way I am calling the function:
SELECT * FROM dbo.fn_HomePageSlider(9, 3025)
Can anyone tell me what's wrong with the above function, as I get the message command completed successfully.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试
Try
或者您可以简单地使用
PRINT
命令而不是SELECT
命令。试试这个,Or you can simply use
PRINT
command instead ofSELECT
command. Try this,如果您的调用是表值函数,则它可以工作。由于它是一个标量函数,因此您需要这样调用它:
Your Call works if it were a Table Valued Function. Since its a scalar function, you need to call it like: