2

我在使用 Enterprise Library 5.0 的 Microsoft Sequel Server 2008 中的输出参数有问题

我正在从我的代码(在 C# 中)调用一个过程,它工作正常,直到我向存储的过程中添加了一个可选的输出参数来跟踪反馈。

从我的代码中调用 proc 的代码:

string insertCommand = insertParams[0]; //the stored proc command
Object[] parameterValues = insertParams.Skip(1).ToArray(); //The parameters
int feedback = 1;
IDataReader reader = localDB.ExecuteReader(insertCommand, parameterValues); //ERROR
if (reader.Eead()){
  //stuf

在调试期间 parameterValues 包含一个对象。我得到的错误是

[System.InvalidOperationException] = {“参数数量与存储过程的值数量不匹配。”}

我的存储过程如下所示:

ALTER PROCEDURE [dbo].[BS_GetDetails] 
@BusStop_ID     INT,
@FEEDBACK_CODE      INT=NULL OUTPUT
AS
BEGIN
SET NOCOUNT ON;

SELECT @FEEDBACK_CODE = 200
    //Do lots of other non-related things, mostly select statements

当我只使用一个参数从数据库内部调用存储过程时,它工作正常,但是在我添加额外的可选输出参数后我的代码中出现错误

我可以创建第二个存储过程来调用第一个,但这似乎是一个 hacky 解决方案,我怀疑我在这里遗漏了一些微妙的东西......

4

1 回答 1

0

您是否查看过您的 parameterValues 对象 b/f 您执行调用?我只使用我需要的键/值对完成了可选参数。

cmd.Parameters.Add(new SqlParameter("@BusStopID", myBusStopID));

于 2012-03-13T17:01:13.243 回答