2011-11-09 177 views
1

我有一个主过程,并且在该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',我想知道我该怎么做。

感谢, 丹

+0

你为什么有两个 “选择”? – Louhike

+0

因为其中一个用于创建新属性,另一个用于更新属性。只有一个被触摸执行 – ediblecode

+0

感谢您的精确度。当我看到你的消息时,我很疲倦... – Louhike

回答

4

您将需要返回做yourway
这不是理想的,但:这应该状态保留。

我会使用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