C# OracleParameterCollection给了我奇怪的错误

C# OracleParameterCollection给了我奇怪的错误,c#,oracle,C#,Oracle,我的代码 Error CS1729 'OracleParameterCollection' does not contain a constructor that takes 0 arguments 如果StoredProcedureCall.GenerateStoredProcedureCall()是您自己定义的函数,则不应将OracleParameterCollection列表传递给它。您可以创建简单的字典并传递到此函数。 然后在函数内部,您可以将参数直接添加到命令中。i、 e

我的代码

Error   CS1729  'OracleParameterCollection' does not contain a constructor that takes 0 arguments   

如果
StoredProcedureCall.GenerateStoredProcedureCall()
是您自己定义的函数,则不应将
OracleParameterCollection
列表传递给它。您可以创建简单的字典并传递到此函数。 然后在函数内部,您可以将参数直接添加到命令中。i、 e:

    public DataTable GenerateStoredProcedureCall(String _connectionString, String StoredProcedure_Name, OracleParameterCollection ParameterNames, out String ResultFromDatabaseOperation)
    {
        DataTable dt = new DataTable();
        try
        {
            using (OracleConnection cn = new OracleConnection(_connectionString))
            {
                OracleDataAdapter da = new OracleDataAdapter();
                OracleCommand cmd = new OracleCommand();
                cmd.Connection = cn;
                cmd.CommandText = StoredProcedure_Name;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.BindByName = true;
                cmd.Parameters.Add(ParameterNames);                        
                da.SelectCommand = cmd;
                da.Fill(dt);
                ResultFromDatabaseOperation = "";
                if (cmd.Parameters["RowCount"].Value != null)
                {
                    ResultFromDatabaseOperation = cmd.Parameters["RowCount"].Value.ToString();
                }
                if (cmd.Parameters["RowCount"].Value == null)
                {
                    ResultFromDatabaseOperation = "0";
                }                    
                return dt;
            }
        }
        catch (OracleException ex)
        {
            ResultFromDatabaseOperation = "";
            Console.BackgroundColor = ConsoleColor.Red;
            Console.ForegroundColor = ConsoleColor.Black;
            Console.WriteLine(ex.StackTrace.ToString());
            return dt;
        }
    }

不需要创建OracleParameterCollection的新实例,这是什么语言/开发环境?它是C语言的。我用我的问题标记了这个问题,它不是这个类的预期用法,通常你会把参数添加到要执行的命令中。我如何把Oracle参数的集合传递给我的类?考虑编辑你的问题并添加A,这样你就可以得到更好的帮助。照目前的情况,我建议使用一个方法来添加一个参数,并根据需要多次调用它。谢谢。问题是将参数传递到我的GenerateStoredProcedureCall中。我们计划使用的SP超过45个。有些是1个参数(即ParameterDirection.Output),有些则多达17个参数。有些传递值(如“John”),而另一些传递日期。所以我想用所有配置的选项定义参数,然后将其传递给我定义的函数以执行相应的任务
    public DataTable GenerateStoredProcedureCall(String _connectionString, String StoredProcedure_Name, OracleParameterCollection ParameterNames, out String ResultFromDatabaseOperation)
    {
        DataTable dt = new DataTable();
        try
        {
            using (OracleConnection cn = new OracleConnection(_connectionString))
            {
                OracleDataAdapter da = new OracleDataAdapter();
                OracleCommand cmd = new OracleCommand();
                cmd.Connection = cn;
                cmd.CommandText = StoredProcedure_Name;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.BindByName = true;
                cmd.Parameters.Add(ParameterNames);                        
                da.SelectCommand = cmd;
                da.Fill(dt);
                ResultFromDatabaseOperation = "";
                if (cmd.Parameters["RowCount"].Value != null)
                {
                    ResultFromDatabaseOperation = cmd.Parameters["RowCount"].Value.ToString();
                }
                if (cmd.Parameters["RowCount"].Value == null)
                {
                    ResultFromDatabaseOperation = "0";
                }                    
                return dt;
            }
        }
        catch (OracleException ex)
        {
            ResultFromDatabaseOperation = "";
            Console.BackgroundColor = ConsoleColor.Red;
            Console.ForegroundColor = ConsoleColor.Black;
            Console.WriteLine(ex.StackTrace.ToString());
            return dt;
        }
    }
foreach(var i in params)
{
    oraCommand.Parameters.Add(new OracleParameter(i.key, i.val));
}