簡體   English   中英

從Pro * C連接獲取OCCI連接?

[英]Get OCCI Connection from Pro*C connection?

我們維護了一系列用C ++編寫的組件,這些組件在Linux,Solaris,AIX和HP / UX下運行,使用Pro * C連接到Oracle數據庫。 我即將編寫一個執行大量動態SQL的組件,並希望使用OCCI實現該功能。 所有組件的基類使用相當普通的Pro * C創建與數據庫的連接:

EXEC SQL CONNECT :user IDENTIFIED BY :password AT :alias USING :name;

並且所有未來的Pro * C代碼都使用alias來與數據庫進行交互。

是否有可能從此獲得OCCI連接,以便我可以保持基類實現完整但在我的組件中使用OCCI?

tl; dr:你不能重用與OCCI的Pro * C連接,但是OTL 支持連接重用。

Pro * C運行時庫在內部使用OCI API。 Oracle記錄了如何獲取當前使用的OCI句柄:

預編譯器應用程序可以提取OCI句柄並直接調用OCI函數。 但是,不支持非阻塞模式,因為預編譯器無法處理可能返回的“仍在執行”的錯誤。 (Oracle的Pro * C程序員指南 ,11.2g)

您可以在嵌入式CONNECT語句后獲取OCI句柄。

有關詳細信息,請參見SQLEnvGet() / SQLSvcCtxGet()函數。

雖然OCCI也在內部使用OCI,但它沒有提供任何方法來“從現有的OCI句柄開始”。 一旦您與OCCI連接,它只提供獲取其OCI句柄的方法。

與OCCI相比, OTL允許您從現有的OCI句柄開始 與OCCI類似,它為C ++中的動態SQL提供了方便的API。 此外,與OCCI不同,它只是頭文件(不再是C ++編譯器/ STL問題),開源,可移植,其API比OCCI更好。 因此,如果您希望在比OCI / Pro * C更高的級別上與Oracle進行交互,那么它可以說是比OCCI更好的替代方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM