输出参数用ExecuteScalar返回的总是0
存储过程
create proc P_LoginUserName
@UserName varchar(50),
@UserPwd varchar(50),
@Flag bit,
@UserId int output
as
begin
SELECT @UserId=UserID FROM tb_User where UserName=@UserName and UserPwd = @UserPwd and Flag=@Flag
end
go
declare @Id int
exec P_LoginUserName '2','2',false ,@Id output
select @Id
执行成功,查询也可以
public int LoginUserName(User user)
{
string procname = "P_LoginUserName";
SqlParameter[] parms = { new SqlParameter("@UserName", SqlDbType.VarChar, 50), new SqlParameter("@UserPwd", SqlDbType.VarChar, 50),
new SqlParameter ("@Flag",SqlDbType.Bit ),new SqlParameter ("@UserId",SqlDbType .Int ) };
parms[0].Value = user.UserName;
parms[1].Value = user.UserPwd;
parms[2].Value = user.Flag;
parms[3].Direction = ParameterDirection.Output;
int result = DataBase.ExecuteScalar(procname, parms);--这里返回的是0
return result;
}