从存储过程返回值

时间:2011-11-09 10:01:26

标签: sql sql-server sql-server-2005

我有一个主程序,在这个SP中它执行以下代码:

EXEC @PropertyID = [import].[spInsertIntoTblMemberProperties]
blah blah blah

然后在我的spInsertIntoTblMemberProperties中输入以下两行代码:

select SCOPE_IDENTITY() as 'MemberPropertyID'; (if it is a new property)
select MemberPropertyID as 'MemberPropertyID'; (if it is an existing property)
from blah blah blah

然而,这并没有使@PropertyID等于'MemberPropertID',我想知道我会怎么做。

谢谢, 丹

1 个答案:

答案 0 :(得分:4)

你需要RETURN来做到这一点 但这并不理想:这应保留给状态。

我使用OUTPUT参数

CREATE PROC ... 
    @PropertyID int OUTPUT
AS
...

select @PropertyID = SCOPE_IDENTITY() as 'MemberPropertyID'; (if it is a new property)
...
select @PropertyID = MemberPropertyID as 'MemberPropertyID'; (if it is an existing property)
from blah blah blah
...
GO

EXEC [import].[spInsertIntoTblMemberProperties] @PropertyID OUTPUT

技术差异示例:set @var = exec stored_procedure