У меня немного сложность с этим в том, что я не уверен, как это сделать в SQL Server.Вывести последнее вставленное значение первичного ключа из хранимой процедуры
В принципе, я хочу, чтобы вставить новую строку в базу данных, получить значение PK, который был только что вставили (тот же запрос) и выводит его обратно в любой называемой хранимой процедуры:
CREATE PROCEDURE Users_Insert
-- Add the parameters for the stored procedure here
@userid int output,
@name varchar(50),
@surname varchar(50),
@email varchar(200),
@password varchar(50),
@location varchar(50)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
insert into Users(FirstName, LastName, Email, Password, Location)
values(@name, @surname, @email, @password, @location);
GO
@userid = @@IDENTITY;
END
Я сделать это в MySQL следующим образом:
CREATE PROCEDURE Users_Insert(@userid int output, @name varchar(50), @surname varchar(50), @email varchar(200), @password varchar(50), @location varchar(50)
BEGIN
insert into Users(FirstName, LastName, Email, Password, Location)
values(@name, @surname, @email, @password, @location);
set @userid = last_insert_id();
END
SQL Server дает мне ошибку:
Msg 102, Level 15, State 1, Procedure Users_Insert, Line 18
Incorrect syntax near '@userid'.
Fra nkly, я не уверен, что правильно сформулировал выходной параметр, может ли кто-нибудь предложить предложения?
Выберите ВЫБРАТЬ @ = идентификатор SCOPE_IDENTITY(); и удалить его не нужно. –
marc_s не любит мой ленивый ввод: P – Ortund