4

有人知道是否有用于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_nameusers.ownerusers.tablespace_name类似于PL/SQL for loop statement

  • 自动获取直到完成机制(没有显式调用stmt.fetch()过程或其他东西)和

  • 在编译时验证 sql 语句的正确性。

有这样的事吗?

4

1 回答 1

1

根据以下 9、10、11 页,除了 PRO*C/C++ 之外,没有其他 C/C++“预编译器”。有一个称为 OCI/OCCI 的 C/C++ 编程语言接口,但从技术上讲,这不是预编译器

此页面声明“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++ 工具上面的页面做)。

于 2012-04-13T17:05:10.523 回答