Vikas Hire Ответов: 1

Как получить возвращаемое значение из хранимой процедуры?


Здравствуйте дорогие,

Я создаю хранимую процедуру следующим образом,
В этой процедуре хранения я хочу вставить регистрационные данные пользователя в tblUserInfo.
если идентификатор электронной почты не существует в базе данных, то я хочу вернуть 1 из хранимой процедуры и сохранить данные в базе данных, которые я передал в хранимую процедуру.
если электронная почта уже существует в базе данных.. Я хочу вернуть 2 из хранимой процедуры, а данные не хочу сохранять.

Я попытался следовать хранимой процедуре, но она дала неожиданный результат. Как я могу это сделать?

ALTER PROCEDURE [dbo].[userRegistration] 

	@userId VARCHAR(12),
	@emailadr VARCHAR(50),
	@password VARCHAR(12)
	

	AS
	BEGIN

	DECLARE @userAutoId VARCHAR(64)=NEWID();
	DECLARE @firstName VARCHAR(15)='';
	DECLARE @lastName VARCHAR(15)='';
	DECLARE @gender BIT=1;
	DECLARE @isDeleted BIT= 0;
	DECLARE @Status INTEGER;
	
	IF NOT EXISTS(SELECT * FROM tblUserInfo WHERE email=@emailadr)
	BEGIN
	
	INSERT INTO tblUserInfo VALUES(
							@userAutoId,
							@firstName,
							@lastName,
							@emailadr,
							@userid,
							@password,
							@gender,
							@isDeleted

	)
	SET @Status=1
	END
	
	ELSE
	BEGIN
	
	SET @Status=2
	
	END
	
	SELECT @Status 
	
END



а мой код на c# таков

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString);

      con.Open();
      SqlCommand cmd = new SqlCommand("userRegistration ", con);
      cmd.CommandType = CommandType.StoredProcedure;
      cmd.Parameters.Add("@userId", SqlDbType.VarChar).Value = userId;
      cmd.Parameters.Add("@emailadr", SqlDbType.VarChar).Value = emailadr;
      cmd.Parameters.Add("@password", SqlDbType.VarChar).Value = password;


       SqlDataReader rdrStatus = cmd.ExecuteReader();
      if (rdrStatus[0].ToString() == "1")
      {
          string result = "1";
          json = new JavaScriptSerializer().Serialize(result);

      }
      else if (rdrStatus[0].ToString() == "1")
      {
          string result = "2";
          json = new JavaScriptSerializer().Serialize(result);
      }
      con.Close();
      return json;
  }


Что я уже пробовал:

Я пытаюсь зарегистрировать нового пользователя. не удается использовать уже использованный идентификатор электронной почты

Laxmidhar tatwa technologies

Как одно значение использовать запрос, как
ВАР СЦ = ЦМД.executescalar так();

1 Ответов