我应该在哪里放置调用Oracle OCI的代码?

时间:2014-03-20 12:05:37

标签: c++ oci proc

我想从c ++程序中检索oracle数据库中的数据,可以建议我哪个更好的选择

oracle调用接口(OCI)或C / C ++预编译器(Pro * C / C ++)也告诉我两者之间的区别。谢谢。

从评论中编辑: 我应该将OCI调用代码放在.cpp文件或PreCompiler(.pc / .pcpp)文件中吗?

1 个答案:

答案 0 :(得分:0)

首先解释两个选项:

  • Pro * C / C ++允许您直接在C / C ++代码中编写SQL语句,就像语言已被SELECT和INSERT等新关键字扩展一样。就像ABAP或Linq一样。通过使用所谓的预编译器预处理嵌入式SQL和C / C ++的混合,可以获得这种效果。它将所有嵌入式SQL转换为许多C代码,这些代码调用名为" SQLLIB"的内部Oracle库。结果是普通的C / C ++代码,可以提供给标准的C / C ++编译器。
  • OCI只是一个从C / C ++代码调用的C接口/ API。没有预处理魔术,只有C / C ++。

Pro&禁忌:

  • 嵌入式SQL使SQL易于阅读并减少了要编写的代码量。所有重复出现的样板代码都被预编译器隐藏。那太好了。但是预编译器引入了一个带有新问题的新构建步骤:例如,预编译器期望嵌入式SQL以特定顺序存在于一个文件中。普通C允许将其拆分并移动功能。嵌入式SQL引入了新的语言规则来服从。
  • 没有比OCI更快的方式来访问数据库。我假设SQLLIB调用OCI,但这意味着你有一个额外的OCI间接。它是一个简单的C API,没有新的语言规则可供学习。但它掩盖了函数调用中的SQL和所有C语法。

哪个更好?这取决于。