ユーザーをテーブルに追加するためのクエリの 1 つのストアド プロシージャを作成しようとしています。成功時と失敗時に戻り値を取得するのに苦労しています。
User テーブルの username 列は、一意の制約を持つように定義されています。
これがストアドプロシージャの概要です。ストアド プロシージャ名: CreateUser
パラメーター
@ユーザー名 varchar(64)
@ファーストネーム varchar(64)
@姓 varchar(64)
@MD5パスワード varchar(64)
@Access_Control int
ID を返します。ユーザーが既に存在する場合は -1、または (-@@ERROR) (整数)
以下は私が書いたストアドプロシージャですが、戻り値の部分をキャプチャできないようです。
ALTER PROCEDURE [dbo].[CreateUser]
-- Add the parameters for the stored procedure here
@username varchar(64) = NULL,
@firstname varchar(64) = NULL,
@lastname varchar(64) = NULL,
@MD5Password varchar(255) = NULL,
@Access_Control int = -10
AS
DECLARE @return_code int
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 [dbo].[User] ([username], [firstname], [lastname], [password], [access_control]) VALUES (@username, @firstname, @lastname, @MD5Password, @Access_Control)
IF(@@ERROR <> 0 )
BEGIN
PRINT N'User with this name already exists. Username must be unique' + @@ERROR
SET @return_code = -1
END
ELSE
BEGIN
SET @return_code = SCOPE_IDENTITY()
END
RETURN @return_code
END
成功した場合の戻り値を Identity に設定したい。ユーザーが既に存在する場合は -1、内部エラーが発生した場合はエラー値。ストアド プロシージャでこの動作をキャプチャするにはどうすればよいですか。前もって感謝します。