我知道我可以创建一个表值函数,如果我想从一个功能,但对于功能在那里我会永远返回多个变量只返回一条记录,这似乎是一种矫枉过正。我宁愿将所有值作为变量返回。我想这可以使用OUTPUT子句完成。如果你让我知道它的可能性,如果它是,请指导我如何去解决它会感激?没有在msdn中找到一个简单的方法。如何使用OUTPUT从一个函数在SQL Server2005中返回多个变量
谢谢。
我知道我可以创建一个表值函数,如果我想从一个功能,但对于功能在那里我会永远返回多个变量只返回一条记录,这似乎是一种矫枉过正。我宁愿将所有值作为变量返回。我想这可以使用OUTPUT子句完成。如果你让我知道它的可能性,如果它是,请指导我如何去解决它会感激?没有在msdn中找到一个简单的方法。如何使用OUTPUT从一个函数在SQL Server2005中返回多个变量
谢谢。
你需要OUTPUT
参数,而不是OUTPUT
条款,如果我正确地理解你的要求。 (这些只适用于存储过程不过)
例
CREATE PROC outputdemo
@name varchar(50),
@status int OUTPUT,
@type nchar(3) OUTPUT
AS
SELECT @status = status, @type = type
FROM master..spt_values
WHERE [email protected] /*<--Pretend this is the PK*/
GO
DECLARE @status int, @type nchar(3)
EXEC outputdemo 'rpc', @status OUTPUT, @type OUTPUT
SELECT @status AS status, @type as type
如果你问明确有关标量UDF然后我可以想返回多个值的唯一办法是通过XML或自定义UDT或其他类似的机制。
谢谢!这正是我需要的,但是对于一个功能......尽管如此,感谢让我知道它不能在功能上完成。我没有使用表值函数(返回单个记录)。 XML也是一个不错的选择,但是随后在我的调用过程中使用Xqueries会让它变慢并且失败了整个目的。再次感谢。 – Tintin 2011-03-08 23:01:26
不幸的是,你不能有功能的输出参数;你只能返回一个标量或一个表。
然而,您可以有程序的输出参数。
create procedure GetMultipleValues
(
@ValueOne int out, -- decorate parameters with out
@ValueTwo nvarchar(100) out
)
as
set @ValueOne = 1
set @ValueTwo = N'Hello, world!'
return
go
declare @MyInteger int
declare @MyString nvarchar(100)
exec GetMultipleValues @MyInteger out, @MyString out -- decorate arguments with out
print @MyInteger -- 1
print @MyString -- Hello, world!
谢谢。这有帮助。 – Tintin 2011-03-08 23:01:53
为什么不使用存储过程返回结果集? – 2011-03-08 22:44:33