将参数传递到存储过程时出错
本文关键字:出错 存储过程 参数传递 | 更新日期: 2023-09-27 18:21:59
我创建了一个用于在表中插入值的存储过程。这是存储过程:
CREATE PROCEDURE [dbo].[insertproc]
@CollectionPersonName varchar(50),
@Address varchar(1500),
@ContactNo varchar(50),
@CreatedBy int,
@CreatedOn datetime
AS
BEGIN
SET NOCOUNT ON;
-- Insert statements for procedure here
insert into CollectionPersonDetails(CollectionPersonName, Address, ContactNo, CreatedBy, CreatedOn)
values(@CollectionPersonName, @Address, @ContactNo, @CreatedBy, @CreatedOn);
END
下面是我为传递参数和在存储过程中执行查询而编写的函数:
public static int SaveDataProcedure(tblCollectionPersonObj oSaveObj, int iUserId)
{
string query = "insertproc";
OdbcConnection conn = new OdbcConnection(Connect.ConnectionString());
OdbcCommand cmd = new OdbcCommand("insertproc",conn);
cmd.CommandText = query;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@CollectionPersonName", oSaveObj.SCollectionPersonName);
cmd.Parameters.AddWithValue("@Address", oSaveObj.SAddress);
cmd.Parameters.AddWithValue("@ContactNo", oSaveObj.SPhoneNo);
cmd.Parameters.AddWithValue("@CreatedBy", iUserId);
cmd.Parameters.AddWithValue("@CreatedOn", CommonData.GetDateForDatabase(DateTime.Now));
cmd.Connection.Open();
int i= cmd.ExecuteNonQuery();
cmd.Connection.Close();
return i;
}
我收到一个错误,说存储过程需要未提供的参数@collectionPersonName
。我也尝试过使用parameters.add
函数,但出现了相同的错误。
当我调试代码时,我可以看到值,但当执行到ExecuteNonQuery()
时,这就是我得到错误的地方。这个错误可能很愚蠢,但我一直没能找到。
请帮忙。
AddWithValue
方法不会添加参数。
检查oSaveObj.SCollectionPersonName
是否为空,在这种情况下使用DBNull.Value
cmd.Parameters.AddWithValue("@CollectionPersonName", oSaveObj.SCollectionPersonNamу ?? DBNull.Value);