私はストアドプロシージャを持っています。 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の残りのパラメータをどのように設定するかをplsで指定できますか? – andrews
リプレイをありがとうございます。 @andrews ...ここにparam [] SqlParameter [] param =新しい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
と、 'ExecuteNonquery'呼び出しの終了後に' @ UserID'パラメータをどのように読み返そうとしていますか?コメントではなく、質問テキストにすべてのコードを追加してください。 – andrews