8

実行された直後にCommandTextにアクセスする方法はありますか?私は次のコードを持っています:

cmd = new OracleCommand(sql.ToString(), conn);
cmd.Parameters.Add(new OracleParameter("@parm", parmValue));


OracleDataAdapter da = new OracleDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);

私が知る必要があるのは、データベースで実行されているsqlコマンド文字列であり、すでにsqlにparmValueの値が含まれています。つまり、クエリ内の文字列「@parm」ではなく、その値を確認できる必要があります。

将来の参照のためにこのSQLをログデータベースにプッシュできるようにするために、これが必要です。

前もって感謝します。

4

2 に答える 2

2

Oracleがこのように正確に機能するかどうかはわかりませんが、他のほとんどのDBプロバイダーの場合、パラメーター化されたクエリはプレーンテキストクエリとしてサーバーに送信されず、代わりに適切なパラメーターを使用してExecuteコマンドとして送信されます。つまり、アプリケーションのレベルでは置換は発生せず、DB自体でのみ発生します。サーバーで実行されている実際のコマンドを表示するには、データベース自体のトレース/ログを確認することをお勧めします。

于 2011-10-27T19:54:55.100 に答える
1

Oracleについてはよくわかりませんが、RDBMSで個人的に作業している場合、これは実行できません。

パラメータを取得して結果のSQLクエリを表示する必要がある場合は、コード内のパラメータコレクションをループし、名前と値のペアを抽出して、結果のクエリなどをエラーログに記録することで常に実行していました。データベース:

StoredProc = InsertCallRecord:パラメーター:CallId = 1234; Custid = 651; PersonCalling = Dave .. ..

これはエラーロギングでのみ実行します。これは、すべての呼び出しで実行するのはパフォーマンスの低下であるためですが、テストシナリオでも機能する可能性があります。

于 2011-10-27T15:27:28.873 に答える