2013-02-14 85 views
0

我想在SQL Server中执行数据类型。你知道我必须做什么吗?SQL Server - 在SQL Server中执行数据类型的过程

USE [MO] 
GO 

DECLARE @return_value int 

EXEC @return_value = [dbo].[SBC] 
     @UserId = 1, 

SELECT 'Return Value' = @return_value 
GO 

返回值:

Name ID 
---------- 
Adam 1 
Jhon 2 

例如IDintbigint?我只能执行现有的程序,这是一个问题。

+0

你究竟需要什么和问题是什么? Did not quite got it – DevelopmentIsMyPassion 2013-02-14 14:21:27

+0

请清楚..?我们没有得到你想要的。 – 2013-02-14 14:22:46

+0

我需要关于返回值类型的信息。例如,名称是“varchar”或“nvarchar”,Id是“int”或“bigint” – 2013-02-14 14:28:16

回答

0

'返回值'是一个执行状态指示器,是一个整数。这并不意味着要传回数据。 成功标准值为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只能有'返回状态'整数。