当我传递此参数而不是错误时,就像指定了多个参数
这是我的C#代码,我正在传递SQL参数
public async Task<CustomerProductDetailsResp> QuickSaveCustomerProductDetails(CustomerProductDetailsReq objReq)
{
Connection con = new Connection();
CustomerProductDetailsResp objBO = new CustomerProductDetailsResp();
DataTable dt = new DataTable();
dt.Columns.Add("RowID", typeof(int));
dt.Columns.Add("CustomerID", typeof(int));
dt.Columns.Add("Quantity", typeof(double));
dt.Columns.Add("ProductID", typeof(int));
int index = 1;
try
{
foreach (BOCustomerProducts list in objReq.CustomerProductDetails.CustomerProducts)
{
DataRow dr = dt.NewRow();
dr["RowID"] = index;
dr["CustomerID"] = list.CustomerID;
dr["Quantity"] = list.Quantity;
dr["ProductID"] = list.ProductID;
dt.Rows.Add(dr);
index++;
}
con.Open();
con.cmd.CommandText = "SP_QuickSaveCustomerProductDetail";
con.cmd.CommandType = CommandType.StoredProcedure;
con.cmd.Parameters.AddWithValue("@Year", objReq.CustomerProductDetails.Year);
con.cmd.Parameters.AddWithValue("@Month", objReq.CustomerProductDetails.Month);
con.cmd.Parameters.AddWithValue("@CreatedBy", objReq.CustomerProductDetails.CreatedBy);
con.cmd.Parameters.AddWithValue("@CreatedOn", objReq.CustomerProductDetails.CreatedOn);
con.cmd.Parameters.AddWithValue("@List", dt);
SqlParameter Msg = new SqlParameter("@Msg", SqlDbType.VarChar, 20000);
Msg.Direction = ParameterDirection.Output;
con.cmd.Parameters.Add(Msg);
objBO.ID = con.cmd.ExecuteNonQuery();
objBO.Msg = Msg.Value.ToString();
}
catch (Exception ex)
{
objBO.ID = 0;
objBO.Msg = ex.Message;
}
finally
{
con.Close();
}
return objBO;
}
这是排序SQL存储过程,我像这样访问这些参数
ALTER PROC [dbo].[SP_QuickSaveCustomerProductDetail]
(
@Year int,
@Month int,
@CreatedBy int,
@CreatedOn datetime,
@Msg varchar(MAX) OUTPUT,
@List AS dbo.ProductList READONLY
)
AS
BEGIN
END
这是我的表类型
CREATE TYPE dbo.ProductList
AS TABLE
(
RowID int,
CustomerID INT,
Quantity numeric(18,2),
ProductID INT
);
答案 0 :(得分:1)
您的程序似乎缺少&#34; @ OpType&#34; PARAM。