我正在尝试从C#程序访问存储过程,而且令人难以置信,我正在
过程或函数'procedure_name'需要参数'@agency', 没有提供。
除 提供外:
SqlCommand cmd = new SqlCommand(sp);
cmd.Connection = conn;
SqlParameter parm = new SqlParameter();
parm.ParameterName = "@agency";
parm.SqlDbType = SqlDbType.VarChar;
parm.Size = 3;
parm.Value = txtAgency.Text.Trim();
cmd.Parameters.Add(parm);
存储过程如下所示:
CREATE PROCEDURE [dbo].[procedure_name]
(
@agency varchar(3)
, @subagency varchar(1)
, @start datetime
, @end datetime
)
AS
我已经完成了类似的存储过程调用多年和几年,没有出现完全有效和正确的调用问题。从顺便说一下,从Sql Management Studio执行时,此存储过程工作正常。
请注意,我已更改参数的顺序,并为第一个参数获取相同的响应,无论哪个参数。
当我在Visual Studio中的调试器下运行它时,我确认parms在预期的位置具有必要的值。
答案 0 :(得分:5)
您需要告诉您的SqlCommand
它正在处理存储过程 - 如下所示:
SqlCommand cmd = new SqlCommand(sp);
-- add this line
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = conn;