如何使用Oracle存储过程中的C ++函数

时间:2014-01-08 20:53:46

标签: c++ sql oracle

我从未使用过Oracle,我通常只使用标准SQL功能。

我有一个用GCC 4.2.4编译的C ++共享库,我需要从Oracle存储过程调用它的功能。

我可以在构建时直接使用共享库,还是必须使用一些特殊标记来构建它?

我是否必须在oracle中创建一个实际调用C ++代码的函数或特殊内容?

如何映射类型?我必须做一些编组吗?

2 个答案:

答案 0 :(得分:1)

您似乎需要使用Oracle External Procedures

答案 1 :(得分:1)

长话短说。 Oracle不允许您访问它的地址空间。 C存储过程的工作方式与MySQL和PostgreSQL不同。你必须:

  • 创建一个共享库,将其与Oracle客户端库链接,并使用CREATE LIBRARY
  • 进行注册
  • 配置监听器。 Oracle侦听器将生成名为extproc(或extproc32)的特殊进程。此过程将加载您的共享库,并将通过IPC与其他Oracle通信。
  • 每次将修补程序应用到Oracle时,您还应重新链接共享库

最佳启动地点是Oracle服务器安装,包含C OCI示例。在那里你会找到一个这样的共享库的骨架,还有一个Makefile来编译它。