有人知道是否有用于 C /C++ 的预处理器与 Oracle 结合使用,这将允许我编写类似于以下内容的 C 或 C++ 代码:
void populateTableList(GuiList* tableList) {
for users in ( select table_name,
owner,
tablespace_name
from dba_tables)
{
tableList -> addRow(
users.table_name,
users.owner,
users.tablespace_name);
}
}
我正在寻找的主要功能是
users.table_name
、 users.owner
和 users.tablespace_name
)类似于 PL/SQL for loop statement
和 stmt.fetch()
过程或其他东西)和 有这样的事情吗?
最佳答案
根据下面9,10,11页没有其他C/C++
PRO*C/C++ 以外的“预编译器”。有一个 C/C++ 编程
语言接口(interface)称为 OCI/OCCI,但从技术上讲这不是预编译器
此页面声明“未预编译 OCI 程序”:
http://www.orafaq.com/wiki/Oracle_Call_Interfaces
这些页面列出了可用的 C/C++ 编译器工具:
9I预编译页面:
http://docs.oracle.com/html/A97297_01/ch4_comp.htm
This page lists PRO*C/C++,
and the Non C precompilers: PRO*COBOL, PRO*FORTRAN,
SQL for ADA, the OCI
10G 预编译器页面:参见部件号 B25416-02
(此页面未列出任何其他 C/C++ 预编译器
已经列出)
9I 至 11 预编译器注释:
https://blogs.oracle.com/db/entry/master_note_for_precompilers_oci_and_occi
(This page Does not list any other C/C++ precompilers not
already listed)
问 Tom OCI/PRO*C 比较:
http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:999630650601
This page shows an example that has an SQL statement with
invalid syntax being passed to OCI, through OCIStmtPrepare()
and the compile does not error. This means that
at the time of the OCI compile a complete syntax check
of the SQL statement is not done which is
consistent with what I have seen.
此页面声明“OCI 和预编译器支持 (..)”暗示
OCI 不做预编译:
http://www.oracle.com/technetwork/database/features/oci/index.html
看起来您的代码中嵌入了 SQL。去检查
此代码在编译时的有效性将需要预编译器
可以访问数据字典(我知道 PRO*C 可以,使用
一种不同的语法,你所拥有的,但没有其他 ORACLE
上页列出的 C/C++ 支持的工具)。