1

ユーザーをテーブルに追加するためのクエリの 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、内部エラーが発生した場合はエラー値。ストアド プロシージャでこの動作をキャプチャするにはどうすればよいですか。前もって感謝します。

4

0 に答える 0