Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 如何在SQLServer2008中创建和调用标量函数_Sql Server 2008_Function_Call_Scalar - Fatal编程技术网

Sql server 2008 如何在SQLServer2008中创建和调用标量函数

Sql server 2008 如何在SQLServer2008中创建和调用标量函数,sql-server-2008,function,call,scalar,Sql Server 2008,Function,Call,Scalar,我创建了一个标量函数,它创建成功,但是当我使用select语句调用该函数时,它显示invalid object,我更改了该函数,成功地完成了消息命令,但是当我调用该函数时,我得到了相同的错误。下面是我尝试调用的函数: ALTER FUNCTION [dbo].[fn_HomePageSlider] ( @PortalID int, @ArticleID int ) RETURNS NVARCHAR(MAX) AS BEGIN DECLARE @HTML NVARCHAR(

我创建了一个标量函数,它创建成功,但是当我使用select语句调用该函数时,它显示invalid object,我更改了该函数,成功地完成了消息命令,但是当我调用该函数时,我得到了相同的错误。下面是我尝试调用的函数:

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

当我成功完成message命令时,有人能告诉我上面的函数有什么问题吗。

如果是表值函数,则调用有效。由于它是一个标量函数,您需要像这样调用它:

SELECT dbo.fn_HomePageSlider(9, 3025) AS MyResult
试一试

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

PRINT dbo.fn_HomePageSlider(9, 3025)

至少对我来说,这是行不通的。删除“*from”就可以了。如何在php中的变量中获得此查询的结果?我的意思是$var=mssql_queryfunction,它返回int值。我没有在$var中得到结果。它显示为'Resourceid 76'@AbbasHow,以便在php的变量中获得此查询的结果?我的意思是$var=mssql_queryfunction,它返回int值。我没有在$var中得到结果。它显示为'Resourceid 76'@Akhil
SELECT dbo.function (parameters)
PRINT dbo.fn_HomePageSlider(9, 3025)