这是我的存储过程的签名:
Create Procedure sp_Member_Account_Select_By_User_And_Membership_Year
(
@Username varchar(150),
@Membership_Year varchar(10)
)
AS
asp.net c#中的代码
command.Parameters.Add("@Username", SqlDbType.VarChar,150).Value = vUsername;
command.Parameters.Add("@Membership_Year", SqlDbType.VarChar,10).Value = "2014";
SqlDataReader dr;
dr = command.ExecuteReader();
错误消息:
程序或功能 'sp_Member_Account_Select_By_User_And_Membership_Year'预计 参数'@Username',未提供。
我尝试过添加参数的不同方法,包括Addwithvalue
,但没有成功。我错过了什么?
答案 0 :(得分:2)
由于您显然将参数添加到命令中,因此还有两件事可能导致此异常:
将命令类型设置为CommandType.StoredProcedure
:
command.ComandType = CommandType.StoredProcedure;
如果DBNull.Value
为空,请将用户名参数设置为vUsername
:
command.Parameters.Add("@Username", SqlDbType.VarChar,150).Value = vUsername ?? DBNull.Value;
答案 1 :(得分:0)
vUsername
可以为空吗?当您需要将null传递给存储过程时,需要传递常量DBNull.Value
而不是null
。
像
这样的东西 command.Parameters.Add("@Username", SqlDbType.VarChar,150).Value =
(vUsername == null) ? DbNull.Value : (object) vUsername;