TimesTenでのPro*C/C++のサポートの概要

TimesTenでのOracle Pro*C/C++プリコンパイラのサポートは、TimesTen OCIに依存します。TimesTen OCIは、Oracleクライアント・ライブラリおよびTimesTen ODBCライブラリに依存します。

TimesTenアーキテクチャにおけるOCIおよびPro*C/C++の位置付けを確認するには、図3-1を参照してください。

この章では、TimesTenでのOracle Pro*C/C++プリコンパイラの使用に固有の情報を示します。TimesTenでのOracle Pro*C/C++プリコンパイラの構文および使用方法は、基本的にOracle Databaseの場合と同じです。

この項の以降の内容は次のとおりです。

Oracle Pro*C/C++プリコンパイラの概要

Oracle Pro*C/C++プリコンパイラを使用すると、SQL文またはPL/SQLブロックを直接CコードまたはC++コードに埋め込むことができます。さらに、CまたはC/C++プログラム・ホスト変数を埋込みSQLまたはPL/SQLで使用できます。

プリコンパイル・ステップを使用して、Pro*C/C++ソース・ファイルをCまたはC++のソース・ファイルに変換します。プリコンパイラはPro*C/C++ファイルを入力として受け入れ、埋込みSQL文を標準Oracleランタイム・ライブラリ・コールに変換し、後でコンパイルおよびリンクが可能な変更されたソース・コード・ファイルを生成します。Pro*C/C++のコードは、Oracle Instant Clientの一部としてTimesTenディストリビューションに付属する、Oracle DatabaseプリコンパイラSQLLIBライブラリとリンクされます。

TimesTenのOCIでのPro*C/C++に関するサポート

TimesTenでのOracle Pro*C/C++プリコンパイラのサポートは、TimesTenのOCIのサポートに応じて異なります。このような理由から、TimesTenのOCIの制限事項は、Pro*C/C++アプリケーションにも当てはまります。

また、TimesTenでは、TimesTenに存在しない機能に関連するOCIコールはサポートされていません。

「TimesTenでのOCIのサポート」を参照してください。その章の説明の多くは、Pro*C/C++アプリケーションにも当てはまります。

TimesTenでのPro*C/C++のサポートに関する制限事項

TimesTenでのPro*C/C++のサポートを使用する際の制限事項を示します。

埋込みSQLのサポートおよび制限事項

TimesTenのPro*C/C++プリコンパイラでは、TimesTenでサポートされていない機能の埋込みSQLはサポートされていません。

「TimesTenの制約事項と制限事項」を参照してください。

TimesTenではSQLLIB機能について、次のようなサポートが提供されています。

  • SQLErrorGetText(sqlglmt)がサポートされています。

  • SQLRowidGet()は、SELECT FOR UPDATE文に続く場合にのみサポートされます。

また、TimesTenでのOracle Pro*C/C++プリコンパイラのサポートには、次の制限があります。

  • REGISTER CONNECTはサポートされていません。

  • ストアドJavaサブプログラムはサポートされていません。

セマンティック・チェックの制限事項

TimesTenでのOracle Pro*C/C++プリコンパイラのサポートには、プリコンパイル時のセマンティック・チェックは含まれません。セマンティック・チェックを指定するSQLCHECKプリコンパイラ・オプション設定は可能ですが、実行されません。

ただし、SEMANTICSを設定した場合、プリコンパイルのセマンティック・チェックは実行されませんが、データベース接続が行われることを認識することが重要です。このため、SEMANTICSを設定する場合は、プリコンパイル時に次の要件があります。

  • データベースが稼働している必要があります。

  • コマンドラインまたはpcscfg.cfg構成ファイルのいずれかでUSERIDプリコンパイラ・オプションを設定する必要があります。既存のTimesTenユーザーのユーザー名とパスワード、およびデータベースを指すTNS名を入力する必要があります。次の例では、パスワードの入力が求められます。

    USERID=user1@my_tnsname

    あるいは、USERID=user1/password@my_tnsnameと入力することもできます。ただし、セキュリティ上の理由から、コマンドラインまたは構成ファイルでパスワードを指定することはお薦めしません。

TNS名の使用方法および構文については、「Pro*C/C++からTimesTenデータベースへの接続」を参照してください。

PL/SQLを使用するPro*C/C++プログラムについての関連情報は、次の「埋込みPL/SQLの制限事項」の項を参照してください。

埋込みPL/SQLの制限事項

TimesTenでは、Pro*C/C++アプリケーションにPL/SQLブロックが含まれている場合、Pro*C/C++はSQLCHECK設定がSEMANTICSであるかのように動作します。この場合、プリコンパイルのセマンティック・チェックは実行されませんが、データベース接続が行われることを認識することが重要です。

このため、PL/SQLをPro*C/C++アプリケーションで使用する場合は、プリコンパイル時に次の要件があります。

  • データベースが稼働している必要があります。

  • 既存のTimesTenユーザーを指定して、USERIDプリコンパイラ・オプションを設定する必要があります。前述の「セマンティック・チェックの制限事項」の項を参照してください。

トランザクションの制限事項

TimesTenでのOracle Pro*C/C++プリコンパイラのサポートには、トランザクションについて、いくつかの制限事項があります。

次のものはサポートされていません:

  • SAVEPOINT SQL文

  • SET TRANSACTION SQL文

    トランザクションのコミットおよびロールバックは実行できますが、SET TRANSACTION SQL文は使用できません。

  • 複数コミットにまたがるフェッチ

  • 分散トランザクション

接続の制限事項

TimesTenでのOracle Pro*C/C++プリコンパイラのサポートでは、接続に関して、いくつかの機能が提供されません。

  • ALTER AUTHORIZATION

  • データベースへの自動接続

  • SYSDBA権限またはSYSOPER権限がTimesTenに存在しない場合、これらの権限を使用したデータベースへの接続。

  • TimesTenまたはOracle Databaseへの暗黙的接続(dblinks)

サポートされている接続構文については、「Pro*C/C++からTimesTenデータベースへの接続」を参照してください。

サポートされていないか制限されている実行可能コマンドおよび句の概要

この項では、TimesTenの制限事項(前の各項で示した内容など)を考慮して、TimesTenでサポートされていないか一部のみサポートされている、Pro*C/C++のEXEC SQL実行可能コマンド、コマンドのカテゴリおよびコマンド句をまとめます。

  • ALTER AUTHORIZATION

  • CACHE FREE ALL

  • CALL

    これはPL/SQLのコールでのみサポートされます。TimesTen組込みプロシージャをコールするには、動的SQL文を使用します。

  • すべての"COLLECTION..."コマンド

  • COMMIT FORCE '任意のテキスト'

  • COMMIT WORK COMMENT '任意のテキスト' RELEASE

    COMMENT句はサポートされていません。

  • CONNECT BY

  • CONTEXT OBJECT OPTION GET

  • CONTEXT OBJECT OPTION SET

  • DECLARE CURSOR

    WITH HOLD句はサポートされていません。

  • DECLARE TABLE

    Oracle Databaseデータ型のみサポートされています。

  • DECLARE TYPE

  • EXPLAIN PLAN

  • IN SYSDBA MODE

  • IN SYSOPER MODE

  • LOCK TABLE

  • すべての"OBJECT..."コマンド

  • PARTITION

  • REGISTER CONNECT

  • RETURN

  • RETURNING

  • SAVEPOINT

  • SET DESCRIPTOR

    CHARACTER_SET_NAMEは設定できません。

  • SET TRANSACTION

  • START WITH

  • TO SAVEPOINT