Gibt es eine Möglichkeit, direkt nach der Ausführung auf CommandText zuzugreifen? Ich habe den folgenden Code:
%Vor%Was ich wissen muss, ist die sql-Befehlszeichenfolge, die in der Datenbank ausgeführt wird, die bereits den Wert von parmValue enthält, der in der SQL enthalten ist. Mit anderen Worten, ich darf die Zeichenfolge "@parm" in der Abfrage nicht sehen, sondern stattdessen den Wert.
Ich brauche das, damit ich diese sql in einer Protokolldatenbank für zukünftige Referenz schieben kann.
Vielen Dank im Voraus.
Ich bin mir über Oracle nicht sicher, aber in den RDBMS, mit denen ich persönlich arbeite, kann das nicht gemacht werden.
Wenn ich die Parameter abrufen und die resultierende SQL-Abfrage anzeigen musste, habe ich das immer getan, indem ich die Parameterauflistung im Code durchgegangen bin und die Name / Wert-Paare extrahiert habe, um die resultierende Abfrage oder etwas Ähnliches zu protokollieren unsere Fehlerprotokollierungsdatenbank:
StoredProc = InsertCallRecord: Parameter: CallId = 1234; Custid = 651; PersonCalling = Dave ...
Ich mache das nur bei der Fehlerprotokollierung, weil es bei jedem Aufruf ein Leistungswiderstand ist, aber es könnte auch in einem Testszenario funktionieren.
Ich bin nicht sicher, ob Oracle genau so funktioniert, aber für die meisten anderen DB-Provider wird eine parametrisierte Abfrage nicht als reine Textabfrage an den Server gesendet, sondern als ein Execute-Befehl mit geeigneten Parametern gesendet. Mit anderen Worten, es gibt keine Substitution auf der Ebene Ihrer Anwendung, nur in der Datenbank selbst. Um den aktuellen Befehl anzuzeigen, während er auf dem Server ausgeführt wird, möchten Sie möglicherweise einen Trace / ein Protokoll der Datenbank selbst anzeigen.
Tags und Links sql c# logging oraclecommand