存储过程中的范围标识

Dmi*_*iyd 2 sql sql-server asp.net stored-procedures

我有以下存储过程.

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)
Run Code Online (Sandbox Code Playgroud)

我想将范围变量插入@last_id_inserted.

基本上,我想将最后插入的id(movie_id)插入到customer表中.

虽然不确定语法

Mik*_*son 7

您可以将函数的结果分配给变量.

SET @last_id_inserted = SCOPE_IDENTITY();
Run Code Online (Sandbox Code Playgroud)

没有必要@last_id_inserted作为参数.将其声明为SP中的变量.

DECLARE @last_id_inserted int;
SET @last_id_inserted = SCOPE_IDENTITY();
Run Code Online (Sandbox Code Playgroud)

或者您可以直接在insert语句中使用它.

INSERT INTO customer (first_name,last_name,movie_id) 
    VALUES (@first_name,@last_name,SCOPE_IDENTITY())
Run Code Online (Sandbox Code Playgroud)


lku*_*ylo 5

SELECT @last_id_inserted = SCOPE_IDENTITY()
or
SET @last_id_inserted = SCOPE_IDENTITY()
Run Code Online (Sandbox Code Playgroud)