您好我正在尝试在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".
答案 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);