将参数传递到存储过程时出错

本文关键字:出错 存储过程 参数传递 | 更新日期: 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()时,这就是我得到错误的地方。这个错误可能很愚蠢,但我一直没能找到。

请帮忙。

将参数传递到存储过程时出错

如果值为null,则

AddWithValue方法不会添加参数。

检查oSaveObj.SCollectionPersonName是否为空,在这种情况下使用DBNull.Value

cmd.Parameters.AddWithValue("@CollectionPersonName",   oSaveObj.SCollectionPersonNamу ?? DBNull.Value);