4

我想從存儲過程返回最後一個插入行的標識。返回存儲過程中最後一個插入行的標識

我的代碼的簡化版本是這樣的:

CREATE PROCEDURE [sp_name] 
    @AuthorisationCode uniqueidentifier 
AS 
    INSERT INTO [tablename] 
      ([AuthorisationCode] 
      ) 
    VALUES 
      (@AuthorisationCode 
      ) 

RETURN @@IDENTITY 

GO 

我打電話通過在企業庫4.1標執行此存儲過程。

它返回null。任何人看到我做錯了什麼。

+0

順便說一句,最好不要用sp_前綴命名procs。但無論如何,也許這是psuedocode。 – 2010-11-30 15:55:48

+0

@Mark,感謝,但它只是psuedocode :) – 2010-11-30 15:57:47

+0

** RETURNING **值通常保留用於錯誤處理(例如,0以外的任何值表示有錯誤)。 – Brad 2010-11-30 15:58:49

回答

13

我說你應該使用SCOPE_IDENTITY()@@identity將返回插入的最後一件事身份(可能不被你的存儲過程如果多個查詢同時運行)。

您還需要選擇它,而不是返回它。

ExecuteScalar將從結果集的第一行返回第一列值。

所以......

SELECT SCOPE_IDENTITY(); 

可能是更你想要什麼。

0

你應該使用select @@identity

相關問題