Sql server 使用SQL函数
您好,我正在尝试在ms sql server中创建一个函数,该函数接受整数参数并返回varchar。然而,我在实施这一点时遇到了一些困难,我非常希望能得到一些帮助:Sql server 使用SQL函数,sql-server,function,sql-server-2012,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 C
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".
当您实际返回varchar 64时,您说返回int。
另外,当你问一个问题并发布什么不起作用的示例代码时,如果你说“什么”不起作用,这会有所帮助。(您收到的错误消息等)。如果列
CategoryID
是表中的主键,并且您100%确定只有一个类别具有particualr CategoryID,则您的代码是安全的,但是,如果它不是主键,并且可能有多个类别具有相同的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
好的,谢谢你的工作,但是我现在调用这个函数有困难,我尝试了exec dbo.GetCategory(1),但它不起作用,我得到了“exec dbo.GetCategory(1)”查看我的更新如何调用这个函数,exec或EXECUTE用于调用存储过程,函数只与SELECT语句一起使用。好的,谢谢你,这对我来说很有意义,我完全理解:)
SELECT dbo.GetCategory (1);