2016-11-23 67 views
3

的SQL文本我使用ODBC API來創建一份準備好的聲明:檢索ODBC準備好的聲明

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

一旦SQLPrepare成功完成,該聲明是通過hstmt手柄訪問。

只有hstmt句柄,是否有任何方式,ODBC API調用或其他方式來檢索與預準備語句相關聯的SQL文本?

換句話說,有沒有什麼方法可以找出什麼SQL傳遞給SQLPrepare調用?

我只發現SQLNativeSql函數,但它只允許解析和驗證SQL文本,所以它的工作原理有點像無操作SQLPrepare。這不是我要找的。儘管我希望找到一個通用的普通ODBC解決方案,而不是特定於任何DBMS,但我主要使用SQL Server的Microsoft ODBC驅動程序連接到SQL Server。

+1

在DBMS是你的工作? – MtwStark

回答

1

我不知道是否有在ODBC API包裹的方法/函數,
但你可以嘗試直接從數據庫調用它

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

雖然我不能接受它作爲答案,但我很欣賞它作爲一個有趣的替代解決方案。對於記錄/其他讀者,這裏是更完整的示例,顯示了使用「sys.dm_exec_requests.sql_handle」列http://stackoverflow.com/a/31968654/151641 – mloskot