2011-12-26 38 views
2

我有以下存儲過程。存儲過程中的作用域標識

ALTER PROCEDURE dbo.insert_movie 

(
@first_name varchar(50), 
@movie_name varchar(50), 
@date date, 
@last_id_inserted int, 
@last_name varchar(50) 
) 

AS 
INSERT INTO movies (movie_name,movie_date) VALUES (@movie_name,@date); 

SELECT SCOPE_IDENTITY() AS scope; 

INSERT INTO customer (first_name,last_name,movie_id) 
    VALUES (@first_name,@last_name,@last_id_inserted) 

我想將範圍變量插入@last_id_inserted。

基本上,我想最後插入的ID(movie_id)插入到客戶表..

不知道,雖然

回答

7

您可以分配功能的結果語法變量。

SET @last_id_inserted = SCOPE_IDENTITY(); 

有沒有必要有@last_id_inserted作爲參數。將其聲明爲SP中的變量。

DECLARE @last_id_inserted int; 
SET @last_id_inserted = SCOPE_IDENTITY(); 

或者你可以直接在insert語句中使用它。

INSERT INTO customer (first_name,last_name,movie_id) 
    VALUES (@first_name,@last_name,SCOPE_IDENTITY()) 
+0

一個非常好的答案,謝謝 – 2011-12-26 18:00:53

5
SELECT @last_id_inserted = SCOPE_IDENTITY() 
or 
SET @last_id_inserted = SCOPE_IDENTITY() 
2

您需要聲明變量在存儲過程和分配SCOPE_IDENTITY函數的值:

DECLARE @last_id_inserted int;  
SET @last_id_inserted = SCOPE_IDENTITY(); 
+0

嗯..這是它..我有其他語法錯誤?!?我可以執行一個接一個的聲明嗎?!? – 2011-12-26 17:36:29

+0

@DmitryMakovetskiyd是的,這應該做到這一點。爲什麼,你有其他的錯誤嗎? – TheBoyan 2011-12-26 17:38:27

+0

好吧,我會記得功能 – 2011-12-26 18:00:23

0

我只想添加到您可以添加OUTPUT子句其他答案(SQLServer的2005年和更高)到您的INSERT,而不是使用SCOPE_IDENTITY

相關問題