c#-过程或函数“”期望参数“”未提供
作者:互联网
这个问题已经在这里有了答案: > Procedure expects parameter which was not supplied 10个
我很烦人的似乎是一个非常“受欢迎”的错误.但是,就我而言,我正在提供期望的参数,并且它肯定有一个值,所以我很困惑.这是我的代码:
public static DataTable MyDataTable(string pd, bool showAll)
{
DataTable results = new DataTable("PD results");
string Conn = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(Conn))
{
SqlCommand cmd = new SqlCommand("dbo.MyProcedure", connection);
SqlParameter pdParam = new SqlParameter("@i_user", SqlDbType.VarChar);
pdParam.Value = pd;
cmd.Parameters.Add(pdParam);
if (showAll)
cmd.Parameters.AddWithValue("@i_ShowALL", (int)1);
else
cmd.Parameters.AddWithValue("@i_ShowALL", (int)0);
SqlDataAdapter da = new SqlDataAdapter(cmd);
try
{
da.Fill(results);
}
catch (Exception ex)
{
string error = ex.Message;
}
}
return results;
}
我已经遍历了代码,并且错误发生在参数@i_user上.但是,当我添加参数时,它具有一个值,并且在查看SqlDataAdapter>时已确认此值.选择命令>参数>非公共成员>项> [0] {@i_user}>基地>值.
尽管参数提供了varchar值,但还是出现了错误
Procedure or function ‘dbo.MyProcedure’ expects parameter ‘@i_user’ which is not supplied
我究竟做错了什么?
解决方法:
错误的原因是SqlCommand类需要纯文本SQL.
分配存储过程名称(在您的情况下为“ dbo.MyProcedure”)时,请添加
...
// Do not forget to Dispose IDisposable instances
using (SqlCommand cmd = new SqlCommand("dbo.MyProcedure", connection)) {
// cmd.CommandText is a stored procedure name, not a plain text SQL
cmd.CommandType = CommandType.StoredProcedure;
...
}
标签:sql,c,sql-server,stored-procedures 来源: https://codeday.me/bug/20191121/2050425.html