【问题标题】:how to create and call scalar function in sql server 2008如何在 sql server 2008 中创建和调用标量函数
【发布时间】:2012-01-27 00:41:03
【问题描述】:

我创建了一个标量函数,它创建成功,但是当我使用 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)

谁能告诉我上述函数有什么问题,因为我成功完成了消息命令。

【问题讨论】:

    标签: sql-server-2008 function call scalar


    【解决方案1】:

    如果它是一个表值函数,你的调用就可以工作。由于它是一个标量函数,你需要这样称呼它:

    SELECT dbo.fn_HomePageSlider(9, 3025) AS MyResult
    

    【讨论】:

    • 如何在 php 的变量中获取此查询的结果?我的意思是 $var = mssql_query(返回 int 值的函数)。我没有在 $var 中得到结果。它的显示类似于 'Resourceid #76' @Akhil
    【解决方案2】:

    试试

    SELECT dbo.function (parameters)
    

    【讨论】:

    • 这不起作用,至少对我来说。删除“* from”,它确实有效。
    • 如何在 php 中的变量中获取此查询的结果?我的意思是 $var = mssql_query(返回 int 值的函数)。我没有在 $var 中得到结果。它的显示类似于“Resourceid #76”@Abbas
    【解决方案3】:

    或者您可以简单地使用PRINT 命令而不是SELECT 命令。试试这个,

    PRINT dbo.fn_HomePageSlider(9, 3025)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-21
      • 1970-01-01
      • 2012-03-29
      • 2011-10-03
      • 1970-01-01
      • 2012-09-27
      • 1970-01-01
      • 2014-01-22
      相关资源
      最近更新 更多