【问题标题】:SQL Server stored procedure expects parameter: error while calling from codeSQL Server 存储过程需要参数:从代码调用时出错
【发布时间】:2021-06-09 17:55:12
【问题描述】:

我编写了这个接受clientId 作为参数的存储过程。正如您在 SQL Server 跟踪中看到的,我在从 .NET 调用时传递了客户端 ID,但仍然显示未提供 clientId 参数的错误。我做错了什么?

存储过程:

从 .NET 调用时的 SQL Server 跟踪:

我仍然收到错误:

过程或函数“USP_LoadPerformaceTemplate”需要参数“@clientId”,但未提供该参数。

【问题讨论】:

  • 该错误是否出现在您的跟踪中?它应该 - 所以也许你没有在寻找问题的根源。最可能的解释是您的应用程序代码中的错误 - 您应该发布。请避免使用图片 - 您的代表应该知道的事情。
  • 对 SP 的调用 缺少参数。对sp_executesql 的调用传递了它,但它运行的语句对所述参数没有任何作用;它只运行 SQL dbo.USP_LoadPerformaceTemplate。我们需要这里的应用程序代码。

标签: c# .net sql-server ado.net


【解决方案1】:

在您的 C# 代码中(您尚未向我们展示),您尚未设置 CommandType

command.CommandType = CommandType.StoredProcedure;
// or
using (var command = new ... { CommandType = CommandType.StoredProcedure})

所以发生的事情是 SQL 被解释为直接查询批处理:

[dbo].[USP_LoadPerformaceTemplate]

不需要EXEC 这个词。所以它试图在没有参数的情况下执行它。

但是当指定CommandType.StoredProcedure时,它作为RPC命令发送来调用存储过程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多