2016-11-23 5 views
3

Я использую ODBC API для создания подготовленного заявления:Получить SQL текст ODBC подготовленного заявления

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

После SQLPrepare завершается успешно, оператор доступен через hstmt ручку.

Имея дескриптор hstmt, есть ли способ, вызов API ODBC или другие средства, чтобы получить текст SQL, связанный с подготовленным оператором?

Другими словами, есть ли способ узнать, какой SQL был отправлен на вызов SQLPrepare?

Я нашел только функцию SQLNativeSql, но это позволяет анализировать и проверять текст SQL, поэтому он немного похож на no-op SQLPrepare. Это не то, что я ищу.

Несмотря на то, что я надеюсь найти общее решение ODBC, а не специфично для каких-либо СУБД, я в основном подключаюсь к SQL Server с использованием драйвера ODBC Microsoft для SQL Server.

+1

, в которой СУБД вы работаете? – 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

 Смежные вопросы

  • Нет связанных вопросов^_^