2011-12-26 2 views
2

다음 저장 프로 시저가 있습니다.저장 프로 시저의 범위 ID

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 문에서 직접 사용할 수 있습니다.

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

아주 좋은 대답, 감사합니다 –

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

당신은 저장 프로 시저에서 변수를 선언하고 SCOPE_IDENTITY 함수의 값을 할당해야 이상) 귀하의 INSERT 대신에 SCOPE_IDENTITY

+0

흠 ... 그것은 다른 구문 오류가 있습니까? 그런 식으로 한 문장 씩 실행할 수 있습니까?!? –

+0

@DmitryMakovetskiyd 네, 그래야합니다. 왜, 다른 오류가 발생 했습니까? – TheBoyan

+0

좋아, 나는 그 기능을 기억할 것이다. –

0

난 그냥 당신이 OUTPUT 절을 추가 할 수 있습니다 다른 답변 (SQLServer에 2005에 추가 할 :

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