tl; dr: Вы не можете повторно использовать соединение Pro * C с OCCI, но повторное использование соединения поддерживается OTL , хотя.
Библиотека времени выполнения Pro * C внутренне использует API OCI.Oracle документирует, как получить текущий используемый дескриптор OCI:
Приложения прекомпилятора могут извлекать дескрипторы OCI и напрямую вызывать функции OCI.Однако неблокирующий режим не поддерживается, поскольку прекомпиляторы не могут обработать ошибку «все еще выполняется», которая может быть возвращена.(Руководство программиста Oracle Pro * C , 11,2g)
Вы можете получить дескриптор OCI после встроенного оператора CONNECT.
См. SQLEnvGet()
/SQLSvcCtxGet()
функции для деталей.
Хотя OCCI также внутренне использует OCI, он не предоставляет никакого способа «начать с» существующего дескриптора OCI.Он предоставляет только методы для получения своего дескриптора OCI после подключения к OCCI.
В отличие от OCCI, OTL позволяет вам начинать с существующего дескриптора OCI .Подобно OCCI, он предоставляет удобный API для динамического SQL в C ++.Кроме того, в отличие от OCCI, он предназначен только для заголовков (не более проблем с компилятором C ++ / STL), с открытым исходным кодом, является переносимым, а его API разработан лучше, чем OCCI.Таким образом, это, возможно, лучшая альтернатива, чем OCCI, если вы хотите взаимодействовать с Oracle на более высоком уровне, чем OCI / Pro * C.