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