使用SQL函数

时间:2014-04-13 00:13:20

标签: sql-server function sql-server-2012

您好我正在尝试在ms sql server中创建一个接受整数参数并返回varchar的函数。但是我在实现这个方面遇到了一些麻烦,并且非常希望得到一些帮助:

CREATE FUNCTION GetCategory (@CategoryID int)
RETURNS int 
AS
BEGIN
    DECLARE @Category varchar(64)

    @Category = (SELECT Category
    FROM Categories
    WHERE CategoryID = @CategoryID)

    RETURN @Category
END

上面的代码就是我已经尝试过的。执行时出现以下错误:=:

Msg 102, Level 15, State 1, Procedure GetCategory, Line 7
Incorrect syntax near '@Category'.
Msg 137, Level 15, State 2, Procedure GetCategory, Line 11
Must declare the scalar variable "@Category".

2 个答案:

答案 0 :(得分:1)

当你实际返回varchar 64时,你会说RETURNS int。 此外,当提出问题并发布不起作用的示例代码时,如果您说“什么”不起作用,它会有所帮助。 (你得到什么错误信息等)。

答案 1 :(得分:1)

如果列CategoryID是您表中的主键,并且您100%确定只有一个具有特定类别ID的类别,那么您的代码是安全的,但如果它不是主键,您可能有多个具有相同CategoryID的类别,我建议在select语句中使用SELECT TOP 1

CREATE FUNCTION GetCategory (@CategoryID int)
RETURNS varchar(64)        --<-- This needs to be the datatype you want to return
AS
BEGIN
    DECLARE @Category varchar(64);

    SELECT @Category =  Category
    FROM  Categories
    WHERE CategoryID = @CategoryID

    RETURN @Category;
END

调用函数

SELECT dbo.GetCategory (1);