2016-11-23 4 views
3

verwende ich ODBC-API eine vorbereitete Erklärung zu erstellen:abrufen SQL-Text von ODBC vorbereiteter Anweisung

SQLPrepare(hstmt, "INSERT INTO t (date) VALUES (?)", SQL_NTS); 

Sobald die SQLPrepare mit Erfolg abgeschlossen hat, ist die Aussage, erreichbar über den hstmt Griff.

Haben Sie die hstmt Handle nur, gibt es eine Möglichkeit, eine ODBC-API-Aufruf oder andere Mittel, um den SQL-Text mit der vorbereiteten Anweisung zugeordnet abrufen?

Mit anderen Worten, gibt es eine Möglichkeit, herauszufinden, was SQL an SQLPrepare Aufruf übergeben wurde?

Ich fand nur SQLNativeSql Funktion, aber es erlaubt nur zu analysieren und SQL-Text validieren, so funktioniert es ein bisschen wie ein No-Op SQLPrepare. Es ist nicht das, wonach ich suche.

Obwohl ich hoffe, herauszufinden, eine generische Plain ODBC-Lösung und nicht spezifisch für DBMS, ich verbinde hauptsächlich mit SQL Server mit dem Microsoft ODBC-Treiber für SQL Server.

+1

, in dem DBMS arbeiten Sie? – MtwStark

Antwort

1

Ich weiß nicht, ob es eine eingewickelt Methode/Funktion in ODBC-API ist,
aber man könnte versuchen, es aus DB direkt anrufen

select * from sys.dm_exec_sql_text(@sql_handle) 
+1

Obwohl ich es nicht als Antwort akzeptieren kann, schätze ich es als eine interessante alternative Lösung. Für den Datensatz/andere Leser ist hier ein vollständigeres Beispiel, das die Verwendung der 'sys.dm_exec_requests.sql_handle'-Spalte http://stackoverflow.com/a/31968654/151641 zeigt – mloskot

Verwandte Themen