Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当企业lib 5.0未提交任何值时,可选输出参数会导致InvalidOperationException_C#_Sql Server 2008_Enterprise Library 5 - Fatal编程技术网

C# 当企业lib 5.0未提交任何值时,可选输出参数会导致InvalidOperationException

C# 当企业lib 5.0未提交任何值时,可选输出参数会导致InvalidOperationException,c#,sql-server-2008,enterprise-library-5,C#,Sql Server 2008,Enterprise Library 5,我在使用企业库5.0的Microsoft Sequel Server 2008中遇到输出参数问题 我从我的代码中调用了一个过程(在C#中),在我向存储的过程中添加了一个可选的输出参数以跟踪反馈之前,它工作得很好 从我的代码调用proc的代码: string insertCommand = insertParams[0]; //the stored proc command Object[] parameterValues = insertParams.Skip(1).ToArray(); //T

我在使用企业库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
当我只使用一个参数从数据库内部调用存储的proc时,它可以正常工作,但当我添加额外的可选输出参数后,代码中出现了错误


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

如果执行调用,是否查看了parameterValues对象b/f?我只使用所需的键/值对完成可选参数

cmd.Parameters.Add(
新的SqlParameter(“@BusStopID”,myBusStopID))

执行调用时,是否查看了parameterValues对象?我只使用所需的键/值对完成可选参数

cmd.Parameters.Add(
新的SqlParameter(“@BusStopID”,myBusStopID))

ExecuteReader似乎过于严格,不能适当地满足可选参数的要求。对ExecuteOnQuery使用更冗长的方法并手动插入参数是可行的。ExecuteReader似乎过于严格,不能适当地满足可选参数的要求。对ExecuteOnQuery使用更冗长的方法并手动插入参数是可行的。