Много погуглив и не найдя того, что ищу, я решил задать этот вопрос.
Я использую переменные привязки, как показано в этой замечательной статье 2005 под названием Обязательные ценности Марка А. Уильямса, например:
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);
Я успешно включил ODP.NET
отладочную трассировку, но есть одна ключевая информация, которая отсутствует то, что зарегистрированный SQL statement
не показывает мне, какое значение было привязано к переменной привязки.
Он регистрирует OracleCommand.CommandText
, но без значений OracleCommand.Parameters
. Это показывает мне это:
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
Что мне действительно хотелось бы увидеть, так это фактические значения, которые использовались в запросе, отправленном на сервер ORACLE, например:
TIME:2013/09/20-22:59:21:890 TID:20fc OpsSqlPrepare2(): SQL: UPDATE PS_LOG SET
APP_NAME = 'App Name',
WHERE LOG_ID = 777
Я пропустил какую-то конфигурацию или эта информация, которую я хочу, недоступна при использовании возможности трассировки ODP.NET
?
Если это не встроено, я думаю, мне придется реализовать свой собственный метод замены и самому зарегистрировать SQL Statement
.