title: How to get tracing info for binding variables passed through OracleParameter in ODP.NET?
body: <p>After Googling a lot and not finding what I'm looking for I decided to ask this question.</p>
  
  <p>I'm using <em>binding variables</em> as demonstrated in this awesome article from <strong>2005</strong> titled <a href="http://www.oracle.com/technetwork/issue-archive/2005/05-sep/o55odpnet-101704.html" rel="nofollow">The Values That Bind</a> by Mark A. Williams, like this:</p>
  
  <pre><code>OracleParameter p_APP_NAME =
      new OracleParameter("p_APP_NAME", OracleDbType.NVarchar2, ParameterDirection.Input);
                           p_APP_NAME.Size = 50;
                           p_APP_NAME.Value = log.Application.Name;
                           cmd.Parameters.Add(p_APP_NAME);
  </code></pre>
  
  <p>I successfully enabled <a href="http://docs.oracle.com/cd/E11882_01/win.112/e18754/featDebug.htm" rel="nofollow"><code>ODP.NET</code> debug tracing</a> but one key info that's missing is that the logged <code>SQL statement</code> doesn't show me what was the value bound to the binding variable.</p>
  
  <p>It's logging <code>OracleCommand.CommandText</code> but without <code>OracleCommand.Parameters</code> values. It's showing me this:</p>
  
  <pre><code>TIME:2013/09/20-22:59:21:890 TID:20fc  OpsSqlPrepare2(): SQL: UPDATE PS_LOG SET 
                                                APP_NAME = :p_APP_NAME, 
                                                WHERE LOG_ID = :p_LOG_ID
  </code></pre>
  
  <p>What I'd really like to see are the actual values that were used in the query sent to the ORACLE server like this:</p>
  
  <pre><code>TIME:2013/09/20-22:59:21:890 TID:20fc  OpsSqlPrepare2(): SQL: UPDATE PS_LOG SET 
                                                APP_NAME = 'App Name', 
                                                WHERE LOG_ID = 777
  </code></pre>
  
  <p>Am I missing some configuration or this info I want is not available when using <code>ODP.NET</code> tracing capability?</p>
  
  <p>If this is not built-in I guess I'll have to implement my own substitution method and log the <code>SQL Statement</code> myself.</p>