我有以下存储过程。
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)插入到customer表中。
不确定语法
答案 0 :(得分: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())
答案 1 :(得分:5)
SELECT @last_id_inserted = SCOPE_IDENTITY()
or
SET @last_id_inserted = SCOPE_IDENTITY()
答案 2 :(得分:2)
您需要在存储过程中声明变量并分配SCOPE_IDENTITY
函数的值:
DECLARE @last_id_inserted int;
SET @last_id_inserted = SCOPE_IDENTITY();
答案 3 :(得分:0)
我只想添加其他答案,您可以将OUTPUT
子句(SQLServer 2005及更高版本)添加到INSERT
,而不是使用SCOPE_IDENTITY