'返回值'是一个执行状态指示器,是一个整数。这并不意味着要传回数据。 成功标准值为0,失败为1,但您可以传回SP中的任何整数以反映许多不同的状态。
从SQL Server帮助文件:
@ RETURN_STATUS是存储模块的 返回状态的可选整数变量。在EXECUTE 语句中使用该变量之前,必须在 批处理,存储过程或函数中声明该变量。
当用于调用标量值用户定义的函数时,@ return_status变量可以是任何标量数据类型。
如果您想要返回不同的数据类型(并且能够查询这些数据的'类型'),请使用'输出参数'。输出参数可以是任何数据类型,一旦SP存在,您可以查询sys.parameters系统表,传入您的SP的object_id(或仅加入到object.id和filter过程名称上的sys.procedures),将sys .parameters到sys.types(在user_type_id上)获取每个参数的sql数据类型名称,包括输出参数
Eg
DECLARE @Param3 bigint
exec dbo.MySPName @Param1, @Param2, @Param3 output
SELECT @Param3 --gives you output value
--This will give you the names and data types of all output parameters in this SP
SELECT p.name, t.name as [type], p.max_length, is_output
FROM sys.parameters p
JOIN sys.types t ON p.user_type_id = t.user_type_id
WHERE p.object_id = OBJECT_ID(N'MySPName')
AND p.is_output = 1
对于标量值函数,在参数和类型的表此相同的查询将返回一个无名参数(p.name为空字符串/空白) - 这代表了UDF的返回值包含在产品包装中的数据类型。但是Store Procedures只能有'返回状态'整数。
来源
2013-02-14 15:06:17
ari
你究竟需要什么和问题是什么? Did not quite got it – DevelopmentIsMyPassion 2013-02-14 14:21:27
请清楚..?我们没有得到你想要的。 – 2013-02-14 14:22:46
我需要关于返回值类型的信息。例如,名称是“varchar”或“nvarchar”,Id是“int”或“bigint” – 2013-02-14 14:28:16