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 で次のエラーが表示されます。
メッセージ 102、レベル 15、状態 1、手順 Users_Insert、行 18
'@userid' 付近の構文が正しくありません。
率直に言って、出力パラメーターを正しく宣言したかどうかわかりません。誰か提案を提供できますか?