title: "ORA-01036: illegal variable name/number\n" for oracle clob in C#
body: <p>When I try to create an oracle stored procedure call with <code>clob</code> input and output in C#, I get the following error:</p>
  
  <pre><code>ORA-01036: illegal variable name/number\n
  </code></pre>
  
  <p>Here's the code itself:</p>
  
  <pre><code>OracleTransaction transaction = connection.BeginTransaction();
  OracleCommand command = connection.CreateCommand();
  command.Transaction = transaction;
  command.CommandText = 
        @"declare xx clob; 
        begin dbms_lob.createtemporary(xx, false, 0); 
        :tempclob := xx; end;";
  
  command.Parameters.Add(new OracleParameter("tempclob", OracleType.Clob))
      .Direction = ParameterDirection.Output;
  
  command.ExecuteNonQuery();
  
  OracleLob tempLob = (OracleLob)command.Parameters[0].Value;
  //byte[] tempbuff = new byte[10000];
  byte[] tempbuff = System.Text.Encoding.Unicode.GetBytes(generateXMLMessage());
  
  tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
  tempLob.Write(tempbuff, 0, tempbuff.Length);
  tempLob.EndBatch();
  command.Parameters.Clear();
  command.CommandText = "InsertMessageAndGetResponseWRP";
  command.CommandType = CommandType.StoredProcedure;
  //command.Parameters
  //.Add(new OracleParameter("ImportDoc", OracleType.Blob)).Value = tempLob;
  command.Parameters.Add(new OracleParameter("iSourceSystem", OracleType.VarChar))
         .Value = "XXX";
  
  command.Parameters.Add(new OracleParameter("iMessage", OracleType.Clob))
         .Value = tempLob;
  
  
  command.Parameters.Add(new OracleParameter("iResponseMessage", OracleType.Clob)).Direction = ParameterDirection.Output;
  command.Parameters.Add(new OracleParameter("retVar ", OracleType.Int32)).Direction = ParameterDirection.Output;
  
  command.ExecuteNonQuery();
  transaction.Commit();
  </code></pre>