2011-11-09 176 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