【问题标题】:Named SqlParameters not being recognized [duplicate]命名的 SqlParameters 未被识别[重复]
【发布时间】:2015-05-04 20:49:08
【问题描述】:

我正在尝试从 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 的调试器下运行它时,我确实确认参数在预期的位置具有必要的值。

【问题讨论】:

  • @GrantWinney,正如您所知道的,Marc_s 击败了您,但感谢您的评论和回答,因为这是我最先看到的并做了面部表情。
  • @GrantWinney,所谓的重复项几乎是在这个被问到的同时被问到的(目前还看不到确切的时间戳)。为什么不将 OTHER 标记为重复项?
  • 我知道这对我没有任何好处,当然也不会造成任何痛苦,因此,@GrantWinney,但如果我告诉你它伤害了我的感情,你会在意吗? :-) 别担心,我真的不觉得被轻视!只是为了掩饰我对世界一般状况的痛苦而开玩笑。
  • 不,不!我喜欢事物的本来面目,@GrantWinney,相信我!只要我的声誉提高,一切都很好。

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


【解决方案1】:

您需要告诉您的 SqlCommand 它正在处理存储过程 - 像这样:

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

【讨论】:

  • 天啊,我不敢相信我成了这件事的受害者。我已经对这些调用进行了数百次编码——并且编码正确!现在我觉得自己比以往任何时候都愚蠢。谢谢你不骂我。
  • @Cyber​​herbalist:人为错误 - 人类确实会犯错误 - 尽量不要犯同样的错误两次 :-)
  • 你来晚了——我以前做过这个。显然最近还不够我在它弹出时识别错误。
猜你喜欢
  • 2023-02-11
  • 2019-08-21
  • 2021-10-19
  • 1970-01-01
  • 2015-05-09
  • 2018-04-08
  • 2016-01-31
  • 2021-12-06
  • 2015-08-07
相关资源
最近更新 更多