繁体   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