命名的SqlParameters无法识别

时间:2015-05-04 20:49:08

标签: c# stored-procedures sql-server-2012

我正在尝试从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在预期的位置具有必要的值。

1 个答案:

答案 0 :(得分:5)

您需要告诉您的SqlCommand它正在处理存储过程 - 如下所示:

SqlCommand cmd = new SqlCommand(sp);
-- add this line
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = conn;