У меня есть хранимая процедура. Он должен возвращать GUID/ID, но после выполнения он возвращает значение 2 или -1. Я хочу, чтобы он возвращал только идентификатор GUID/ID. Пожалуйста, помогите мне решить эту проблему.Как вернуть GUID/ID из хранимой процедуры
Вот код
Хранимая процедура:
create procedure SampleAddUser1
(@Name nvarchar(MAX),
@MailID nvarchar(MAX),
@MobileNumber varchar(12),
@Password nvarchar(MAX),
@OTPNo varchar(10),
@OTPExp datetime,
@UserID uniqueidentifier output)
as
if (not exists (select * from tbl_UserDetails where [email protected]))
begin
begin transaction
set @UserID = NEWID()
insert into tbl_UserDetails(UserID, Name, Password, MobileNumber, MailID)
values (@UserID, @Name, @Password, @MobileNumber, @MailID)
insert into tbl_OTPDetails(UserId, OTPNo, OTPExp)
values (@UserID, @OTPNo, @OTPExp)
commit transaction
end
C# код здесь .....
SqlParameter sqlParam = new SqlParameter("@UserID", SqlDbType.UniqueIdentifier);
sqlParam.Direction = ParameterDirection.Output;
param[6] = sqlParam;
r = _obj.ExecuteNonquery("SampleAddUser1", CommandType.StoredProcedure, param.ToArray());
Obj.ExecuteNonQuery
:
public int ExecuteNonquery(string commandText,
CommandType commandType, SqlParameter[] parameters)
{
try
{
cmd = new SqlCommand(commandText,con);
cmd.CommandType = commandType;
foreach (SqlParameter p in parameters)
{
if (p.Value == null)
{
}
cmd.Parameters.Add(p);
}
int output= cmd.ExecuteNonQuery();
con.Close();
return output;
}
catch (Exception ex)
{
throw new ArgumentException(ex.Message);
}
finally
{
con.Close();
}
}
Вы могли бы указать, как вы заполняете остальные параметры в 'param []' list? – andrews
Спасибо за повтор. @andrews ... вот параметр [] SqlParameter [] param = new SqlParameter [7]; param [0] = новый SqlParameter ("@ Name", objBAL.Name); param [1] = новый SqlParameter («@ Password», objBAL.Password); param [2] = новый SqlParameter ("@ MailID", objBAL.MailId); param [3] = новый SqlParameter ("@ MobileNumber", objBAL.MobileNumber); param [4] = новый SqlParameter ("@ OTPNo", objOTP.OTPN0); param [5] = новый SqlParameter ("@ OTPExp", objOTP.OTPExp); – NaveenGNK
и как вы пытаетесь прочитать параметр '@ UserID' после завершения вызова ExecuteNonquery? Пожалуйста, добавьте весь текст в текст вопроса, а не комментарии. – andrews