我想從存儲過程獲取最後一個插入的ID,但是我不能。不能從存儲過程返回最後一個插入的行
我想要的只是獲得SCOPE_IDENTITY()
。
我的存儲過程是這樣的:
CREATE PROCEDURE [dbo].[sp_InsertProduct]
@ProductName varchar(30),
@ProductPrice decimal ,
@ProductQuantity int,
@id int output
AS
BEGIN
INSERT INTO Product (ProductName, ProductPrice, ProductQuantity)
VALUES (@ProductName, @ProductPrice, @ProductQuantity)
SET @id = SCOPE_IDENTITY()
RETURN @id
END
,這裏是我的C#代碼
var ProductParameters = new[] {
new SqlParameter("@ProductName", Product.ProductName),
new SqlParameter ("@ProductPrice", Product.ProductPrice),
new SqlParameter ("@ProductQuantity", Product.ProductQuantity)
};
var y = db.Database.ExecuteSqlCommand("EXEC sp_InsertProduct @ProductName, @ProductPrice, @ProductQuantity", ProductParameters);
@id不應該是一個OUTPUT參數:只需返回值即可。我懷疑SQL命令調用會引發一個錯誤:注意任何這樣的「什麼都行不通」的結果。 – user2864740
備註:您應該**不要**爲存儲過程使用'sp_'前綴。微軟已經保留了這個前綴以供自己使用(參見*命名存儲過程*)](http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx),以及你將來有可能冒着名字衝突的風險。 [這對你的存儲過程性能也是不利的](http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix)。最好只是簡單地避免使用'sp_'並將其他內容用作前綴 - 或者根本沒有前綴! –