[英]ADO.NET: Send procedure parameter with null value
我需要向程序发送一个参数 null 值,但出现错误:
System.Data.SqlClient.SqlException:'过程或 function'sel_mizanyeni' 需要参数'@subeno',但未提供。'
当我在 SQL 服务器中使用相同的参数运行相同的程序时,它不会导致错误。 当我在 C# 中使用 ADO.NET 运行它时,我得到了那个错误。
在 SQL 服务器上运行 state:
exec sel_mizanyeni
@subeno=null,
@tarih='2021-12-28 00:00:00',
@kirilimlevel=8,
@detaylevel=3,
@hesap1=N'342',
@hesap2=N'343',
@dovizcinsi=0,
@bakiyeverenler=1,
@optnetbakiye=1,
@optdisticsir=0,
@opteval=0,
@kurtarihi='2021-12-28 00:00:00',
@yilsonu=0,
@firmano=NULL,
@ekno=NULL,
@ikitariharasi=0,
@bittarih='2021-12-28 00:00:00',
@migration=1
此代码在 C# 中不起作用:
SqlCommand cmd = new SqlCommand("sel_mizanyeni", baglanti);
cmd.CommandType = CommandType.StoredProcedure;
// I need to pass NULL here, but I get the mentioned error
cmd.Parameters.AddWithValue("@subeno", null);
cmd.Parameters.AddWithValue("@tarih", "2021-12-28 00:00:00");
cmd.Parameters.AddWithValue("@kirilimlevel", 8);
cmd.Parameters.AddWithValue("@detaylevel", 3);
cmd.Parameters.AddWithValue("@hesap1", "342");
cmd.Parameters.AddWithValue("@hesap2", "343");
cmd.Parameters.AddWithValue("@dovizcinsi", 0);
cmd.Parameters.AddWithValue("@bakiyeverenler", 1);
cmd.Parameters.AddWithValue("@optnetbakiye", 1);
cmd.Parameters.AddWithValue("@optdisticsir", 0);
cmd.Parameters.AddWithValue("@opteval", 0);
cmd.Parameters.AddWithValue("@kurtarihi", "2021-12-28 00:00:00");
cmd.Parameters.AddWithValue("@yilsonu", 0);
cmd.Parameters.AddWithValue("@firmano", null);
cmd.Parameters.AddWithValue("@ekno", null);
cmd.Parameters.AddWithValue("@ikitariharasi", 0);
cmd.Parameters.AddWithValue("@bittarih", "2021-12-28 00:00:00");
cmd.Parameters.AddWithValue("migration", 1);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
当您向服务器发送 null 参数值时,您必须指定 DBNull,而不是 null(Visual Basic 中为 Nothing)。 系统中的 null 值为空的 object 没有任何值。 DBNull 用于表示 null 值。
因此,使用DBNull.Value
而不是null
作为参数值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.