2012-07-31 61 views
2

这里是伪代码存储过程我目前使用的,如何从存储过程中没有输出参数返回值

CREATE PROC uspFoo 
(
@id int, 
@type nvarchar(255), 
@status bit output 
) 
AS 
IF .... 
SET @status=1 
ELSE 
SET @status=0 
GO 

在执行此存储过程,我不得不通过将存储的输出参数,其返回值,

DECLARE @id int, @type nvarchar(255), @status bit 
SET @id=.. 
SET @type=.. 
EXEC uspFoo @id, @assayType, @status output 

PRINT @status 

GO 

返回值,或者在此情况下status,要么是0(假)或1(真)。

如何直接返回值(例如bit)而不必将其存储在临时输出参数中?

+0

你可能会考虑[标量用户自定义函数(http://msdn.microsoft.com/en-us/library/aa175085%28v=sql.80% 29.aspx),您可能会从查询中调用,与存储过程不同。 – 2012-07-31 22:29:54

回答

5

在这种情况下,您可以使用存储过程的返回值。以下应该工作。

CREATE PROC uspFoo 
(
@id int, 
@type nvarchar(255) 
) 
AS 
IF .... 
    RETURN 1 
ELSE 
    RETURN 0 
GO 

要拨打:

DECLARE @id int, @type nvarchar(255), @status bit 
SET @id=.. 
SET @type=.. 
EXEC @status=uspFoo @id, @assayType 

PRINT @status