命名的 SqlParameters 未被识别

Named SqlParameters not being recognized

我正在尝试从 C# 程序访问存储过程,令人难以置信的是,我得到了

Procedure or function 'procedure_name' expects parameter '@agency', which was not supplied.

除了提供的:

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 中的调试器下有 运行 这个时,我确认参数在预期的地方有必要的值。

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

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