Есть программа (мной писанная), которая висит на компе (дооолго) и делает "свои дела". Т.е. после запуска работает без какого-то участия пользователя.
И при работе время от времени немножко лазает в оракловую базу данных.
Это "лазание" я сделал через SQL-WinAPI-функции (SQLAllocHandle, SQLDriverConnect, SQLExecute и т.п.) (если спросите "почему так?", отвечу: когда-то пользовался этими функциями, т.е. как бы уже был "знакомый путь", и путь, в общем, работающий

В общем, в "штатной ситуации" все работает.
Но начальству хотелось бы, чтобы программа, в случае возникновения сбоя в связи с СУБД (ну, вдруг какому-нибудь админу шнурок понадобиться переткнуть) сама восстанавливала соединение и продолжала работать.
И вот тут начинается веселуха.
У меня есть хэндел соединения (hdbcDB), полученный функцией
SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbcDB),
на который следан коннект (функция SQLDriverConnect (hdbcDB, ...)).
Итак. Связь разорвана (моделирую это, выдергивая шнур из сетевой платы). Если я пытаюсь выполнить SQLDisconnect (hdbcDB), то получаю ошибку (со смыслом: нет соединения).
Более того, даже если связь (физически) восстановлена (я воткнул сетевой шнур обратно), то все равно SQLDisconnect (hdbcDB) не выполняется.
Попытка освободить этот хэндл (SQLFreeHandle(SQL_HANDLE_DBC, hdbcDB)) также дает ошибку "Нарушение последовательности действий" (намекая, что не выполнен SQLDisconnect).
Если же я просто пытаюсь опять выполнить SQLDriverConnect (hdbcDB, ...), то получаю ошибку "Это соединение уже используется".
В общем, получается какой-то замкнутый круг


В конце концов, можно, наверное, плюнуть на этот "зависший" хэндл соединения (hdbcDB) и выделить новое соединение и работать с ним. Но как-то это некрасиво получается: оставлять "незачищенные хвосты".
Быть может, кто-то что-то посоветует? Вроде, все функции из этого раздела (SQLxxxxxxx) просмотрел, но никаких идей не возникло...
Заранее спасибо.