标签:sql c sql-server stored-procedures
这个问题已经在这里有了答案: > 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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。