title: How to resolve this "PLS-00306: wrong number or types of arguments in call..."
body: <p>I've been struggling with a call to an Oracle database for over a day now.  I have no access to the database other than programmatically, although a DBA was able to give me the following:</p>
  
  <pre><code>desc appowner.member_data_package
  
  PROCEDURE UPDATE_NOTES_V001
  Argument Name                  Type                    In/Out Default?
  ------------------------------ ----------------------- ------ --------
  TAU_UID_IN                     VARCHAR2                IN
  INCOMING_FUNC_IN               VARCHAR2                IN
  INCOMING_TEXT_IN               VARCHAR2                IN
  SYS_SOURCE_IN                  VARCHAR2                IN
  USER_ID_IN                     VARCHAR2                IN
  O_STATUS                       VARCHAR2                OUT
  </code></pre>
  
  <p>My code looks like this:</p>
  
  <pre><code>using (var connection = new OracleConnection(connectionString))
  {
      connection.Open();
  
      OracleCommand command = new OracleCommand
      {
          Connection = connection,
          CommandType = CommandType.StoredProcedure,
          CommandText = "appowner.MEMBER_DATA_PACKAGE.UPDATE_NOTES_V001",
          BindByName = true
      };
  
      command.Parameters.Add(new OracleParameter("O_STATUS", OracleDbType.Varchar2, ParameterDirection.ReturnValue));
      command.Parameters.Add(new OracleParameter("TAU_UID_IN", OracleDbType.Varchar2, ParameterDirection.Input)).Value = "7400";
      command.Parameters.Add(new OracleParameter("INCOMING_FUNC_IN", OracleDbType.Varchar2, ParameterDirection.Input)).Value = "PROVCOUNT";
      command.Parameters.Add(new OracleParameter("INCOMING_TEXT_IN", OracleDbType.Varchar2, ParameterDirection.Input)).Value = "Pypestream testing.";
      command.Parameters.Add(new OracleParameter("SYS_SOURCE_IN", OracleDbType.Varchar2, ParameterDirection.Input)).Value = "CRM";
      command.Parameters.Add(new OracleParameter("USER_ID_IN", OracleDbType.Varchar2, ParameterDirection.Input)).Value = "jac";
  
      command.ExecuteNonQuery();
      Console.WriteLine($"Insert output value is '{command.Parameters["O_STATUS"].Value.ToString()}'");
  
  }
  </code></pre>
  
  <p>The error I get when I run this is:</p>
  
  <pre><code>ORA-06550: line 1, column 15:
  PLS-00306: wrong number or types of arguments in call to 'UPDATE_NOTES_V001'
  ORA-06550: line 1, column 7:
  PL/SQL: Statement ignored
  </code></pre>
  
  <p>As far as I can tell I <em>do</em> have the right number and types of arguments, but if somebody wiser than me in the ways of Oracle (which, basically, is anyone) can point out where I messed up that would be awesome.</p>
  
  <p>If that part looks right and the error is a red herring of some sort, what else can I look at?  Is there some other way to call this procedure?  Keep in mind I have no tools other than Visual Studio 2017.  I cannot download any helpful extensions.  I have no direct access to the database other than an email to the DBA.</p>
  
  <p>I also confess that I could be on a completely wrong tack here.  I'm totally guessing the code to insert values into the Oracle database would look like this based on some examples I've seen here and around the 'net.  Any advice to tackle this would be helpful.</p>