2013-08-21 67 views
0

您好我有一個存儲過程,我插入一行比選擇該行的ID。在一條語句中插入和選擇行ID

insert into tTest 
    ( loca 
    ,name 
) values (
    @loc 
    ,@name 
); 

select id from tTest where [email protected]; 

我想知道是否有辦法將它合併爲一個語句。我可以在哪裏選擇新行的ID以及同時插入行。請告訴我。由於

+0

如果'name'不是唯一的,你知道現在的做法可能返回多行,對不對?通常,您希望使用SCOPE_IDENTITY()來代替查詢表或使用OUTPUT子句。 –

回答

3

您的格式是絕對離奇給我,但嘗試:

insert into tTest 
    ( loca 
    ,name 
) 
OUTPUT inserted.id 
    values (
    @loc 
    ,@name 
); 

如果以後需要使用該值,你可以將你的「一個說法」的要求,因爲你將需要:

使用SCOPE_IDENTITY()

DECLARE @id INT; 

insert into tTest 
    ( loca 
    ,name 
) 
    values (
    @loc 
    ,@name 
); 

SELECT @id = SCOPE_IDENTITY(); 

轉到矯枉過正,並使用一個表VA可變結構

DECLARE @idTable TABLE(ID INT); 

insert into tTest 
    ( loca 
    ,name 
) 
OUTPUT inserted.id INTO @idTable 
    values (
    @loc 
    ,@name 
); 

-- reference @idTable later 
+0

謝謝,我以後如何在代碼中使用inserted.id?我只是使用inserted.id或需要設置它與一些變量? –

+0

我需要稍後使用id將此添加的行ID添加到另一個表中。 –

+0

@ J.Davidson我明白,但你的問題在一個陳述中明確指出。這真的是一個要求嗎?如果沒有,請把它從問題中刪除? –