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_name_ _ _users.ownerusers.tablespace_namePL/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 および Precompilers Support for (..)」と記載されています。

http://www.oracle.com/technetwork/database/features/oci/index.html

あなたが持っているコードにはSQLが埋め込まれているようです。コンパイル時にこのコードの有効性をチェックするには、データ ディクショナリにアクセスできるプリコンパイラが必要です (PRO*C は、あなたが持っているものとは異なる構文でアクセスできることを知っていますが、C/C++ 用にリストされている他の ORACLE サポート ツールはどれもありません)。上記のページはそうです)。

于 2012-04-13T17:05:10.523 に答える