2014-02-05 45 views
0

我已經構建了一個過程,該過程應該將新行插入到表中並返回其ID。使用OUTPUT子句的SQL過程不返回值

CREATE PROCEDURE [InsertFood] 
AS 
DECLARE @ID TABLE (foodId INT) 
insert into TblFood 
OUTPUT INSERTED.foodId INTO @ID(foodId) 
default values 
select * from @ID 
return 

當我運行這個程序,它總是返回0。

+0

您確定所有列都接受默認值或可以爲空嗎?顯示'tblFood'的'create table'語句。列「0」的默認值是什麼?除了自動識別的foodId以外的每一列都有 –

+0

。它看起來像這樣((0))每個colomn的NOT NULL – Nityuiop18

回答

1

閱讀本MSDN後提供例如:Retrieving Identity or Autonumber Values

例子:

CREATE PROCEDURE dbo.InsertCategory 
    @CategoryName nvarchar(15), 
    @Identity int OUT 
AS 
INSERT INTO Categories (CategoryName) VALUES(@CategoryName) 
SET @Identity = SCOPE_IDENTITY() 

CREATE PROCEDURE [InsertFood] 
AS 
DECLARE @ID int 
--insert data in table Example 
    ----INSERT INTO Production.Location (Name, CostRate, Availability, ModifiedDate) 
    ----VALUES ('Damaged Goods', 5, 2.5, GETDATE()); 
--insert data in table 
select @ID = SCOPE_IDENTITY() 
return @ID 

你可以使用Scope_Identity()獲取最後一個值。

+0

@@ Identity的含義是什麼? – Nityuiop18

+0

@ Nityuiop18 =你可以在這裏檢查http://technet.microsoft.com/en-us/library/ms187342.aspx –

+0

當我試圖更新程序 – Nityuiop18