J'utilise l'API ODBC pour créer une instruction préparée:
SQLPrepare(hstmt, "INSERT INTO t (date) VALUES (?)", SQL_NTS);
Une fois le SQLPrepare
terminé avec succès, l'instruction est accessible via le handle hstmt
.
Avoir le handle hstmt
seulement, est-il possible, un appel d'API ODBC ou d'autres moyens, de récupérer le text SQL associé à l'instruction préparée?
En d'autres termes, existe-t-il un moyen de savoir ce que SQL a été passé à SQLPrepare
appel SQLPrepare
?
J'ai seulement trouvé la fonction SQLNativeSql , mais elle permet seulement d'parsingr et de valider le text SQL, donc cela fonctionne un peu comme un SQLPrepare
non-op. Ce n'est pas ce que je cherche.
Bien que j'espère find la solution ODBC ordinaire générique et non spécifique à n'importe quel SGBD, je me connecte principalement à SQL Server utilisant le pilote de Microsoft ODBC pour SQL Server.
Je ne sais pas s'il existe une méthode / fonction enveloppée dans l'API ODBC,
mais vous pouvez essayer de l'appeler directement à partir de DB
select * from sys.dm_exec_sql_text(@sql_handle)