この付録では、Pro*C/C++プリコンパイラの新機能について簡単に説明します。各機能の概要と、詳細が記載されている章を示します。この付録の項目は、次のとおりです。
この項では、このリリースの新しい機能について説明します。
新しく次の5つの外部データ型を使用できます。
INTERVAL DAY TO SECOND
INTERVAL YEAR TO MONTH
TIMESTAMP
TIMESTAMP WITH TIMEZONE
TIMESTAMP WITH LOCAL TIMEZONE
「その他の外部データ型」を参照してください。
この項では、旧リリースでの新機能について説明します。
Pro*C/C++では、構造体の配列の使用をサポートしています。これにより、複数行、複数列を操作できます。この機能拡張により、Pro*C/C++ではスカラー構造体の単純な配列を埋込みSQL文でバインド変数として処理できるため、データの処理がより簡単になります。これで、プログラミングがさらに直観的になり、データ編成もはるかに自由にできます。
Pro*C/C++では、構造体の配列をバインド変数として使用できるのみでなく、インジケータ構造体の配列も構造体の配列の宣言で使用できるようになりました。「構造体配列」を参照してください。
プリコンパイラ・オプションHEADERは、プリコンパイル済ヘッダー・ファイルを作成し、大規模なプロジェクトの開発に要する時間およびコンピュータ・リソースを削減するために使用できます。「プリコンパイル済ヘッダー・ファイル」を参照してください。
CALL埋込みSQL文はストアド・プロシージャを呼び出します。新しいアプリケーションの埋込みPL/SQLブロックのかわりに使用することもできます。「CALL(実行可能埋込みSQL)」を参照してください。
Pro*C/C++のクライアント・アプリケーションでは、EXEC SQL CONNECT文を拡張し、実行時にユーザーのパスワードを変更できます。「ALTER AUTHORIZATION句を使用したパスワードの変更」を参照してください。
Pro*C/C++では、NLS_LOCAL=NOの場合に、データベース・サポートとともに各国語キャラクタ・セットが(NCHAR、NVARCHAR2、NCLOB列に関して)サポートされます。NLS_LOCAL=NOで、新規の環境変数NLS_NCHARが有効な各国語キャラクタ・セットに設定されていれば、NCHARがサポートされます。「環境変数NLS_NCHAR」を参照してください。
CHARACTER SET [IS] NCHAR_CS句は、文字変数宣言で指定できます。この結果は、NLS_CHARプリコンパイラ・オプションで変数を命名した場合と同じです。「CHARACTER SET [IS] NCHAR_CS」を参照してください。
新しい句CONVBUFSZをEXEC SQL VAR文で使用すると、キャラクタ・セットを変換できます。「EXEC SQL VARおよびTYPEディレクティブ」を参照してください。
このオプションで、Cホスト文字変数のデフォルトのマッピングを指定します。デフォルトでは、文字列はCHARZ(固定長の空白文字で埋められ0で終了する)になっています。詳細は、「CHAR_MAPプリコンパイラ・オプション」を参照してください。
今回のPro*C/C++リリースでは、各SQLLIB関数に新しい別名が付いていますが、その旧名もそのまま残っています。「SQLLIBパブリック関数の新しい名前」を参照してください。
埋込みSQLディレクティブWHENEVERでは、DO BREAKおよびDO CONTINUEアクションをサポートしています。「WHENEVERディレクティブの使用」および「WHENEVER(埋込みSQLディレクティブ)」を参照してください。
Pro*C/C++では、データベース・サーバーに定義したオブジェクト型にC言語の構造体をマップできます。
連想アクセス用インタフェースとナビゲーショナル・アクセス用インタフェース(実行可能埋込みSQL拡張機能)を使用してPro*C/C++プログラムのオブジェクトにアクセスする方法の詳細は、第17章「オブジェクト」を参照してください。
オブジェクトへのアクセス方法を示すサンプル・プログラムは、「ナビゲーショナル・アクセスのサンプル・コード」を参照してください。
Object Type Translator(OTT)のユーティリティについては、新しい章で詳しく説明しています。このユーティリティにより、データベースのオブジェクト型をC言語の構造体にマップして、OCIアプリケーションやPro*C/C++アプリケーションで使用できます。OTTは、プリコンパイラよりも先に実行します。第19章「Object Type Translator(OTT)」を参照してください。
OCI関数コールと埋込みSQL文を組み合せて、アプリケーションで使用できます。OCIStringおよびOCINumberデータ型を操作するライブラリ・ルーチンのみでなく、新しいOCI相互運用性機能を使用できます。Pro*C/C++のオブジェクト型サポートの詳細は、第17章「オブジェクト」を参照してください。
埋込みSQL文インタフェースを使用すると、LOB(ラージ・オブジェクト)をプリコンパイラ・アプリケーションで使用できます。LOBの使用方法、内部LOBおよび外部LOB、LOBを処理する他の方法との比較が示されます。新しいSQL文がそれぞれ紹介されます。LOBインタフェースの使用方法は、サンプル・コードによって示されています。詳細は、第16章「LOB」を参照してください。
埋込みSQL文を使用した動的SQL方法4の完全なANSI実装については、第14章「ANSI動的SQL」を参照してください。まず簡単な例を使用して概要が説明されます。次に新しいSQL文の完全な説明が続きます。その後、demo
ディレクトリのサンプル・プログラムが示されます。
2種類のコレクション(VARRAYおよびNESTED TABLE)が紹介され、他のデータ型と比較されます。それから、コレクションを操作する埋込みSQLコマンドについて説明します。第18「コレクション」を参照してください。
この項では、Pro*C/C++プログラマにとって興味深い、様々なトピックについて説明します。
バインド変数および定義変数のUnicode(UCS16)キャラクタ・セットのサポートについては、「Unicode変数」を参照してください。
このプリコンパイラ・オプションを使用すると値をプリフェッチするため、データベース・アクセスが速くなり、結果としてネットワークへのラウンドトリップが少なくなります。「PREFETCHプリコンパイラ・オプション」を参照します。
C言語で作成された外部プロシージャは、PL/SQLブロックからコールできます。REGISTER CONNECT埋込みSQL文はプロシージャで使用します。「外部プロシージャ」を参照してください。
Javaで作成されたストアド・プロシージャはアプリケーションからコールできます。Javaで作成されたプロシージャのコール方法は、「ストアドPL/SQLおよびJavaサブプログラム」を参照してください。
この句はINSERT、DELETEおよびUPDATE文で使用できます。「DML RETURNING句」を参照してください。
CLOSE_ON_COMMITマイクロ・プリコンパイラ・オプションを使用すると、マクロ・オプションMODE=ANSIでCOMMITが実行されるときにすべてのカーソルをクローズするかどうかを選択できます。「#include <stdio.h>」および「CLOSE_ON_COMMIT」を参照してください。
アプリケーションの多くは、文字列が可変長(VARCHAR2など)であるという前提で作成されています。デフォルトでは、空白文字で埋められ、ヌル文字で終了する固定長文字列(CHARZ)を使用し、現行のSQL規格に準拠しています。
アプリケーションの文字列の長さが変わることを見込んでいる場合(文字列の比較方法で特に重要)、オプションDBMS=V8とCHAR_MAP=VARCHAR2を指定してアプリケーションをプリコンパイルする必要があります。詳細は、「文字データ」を参照してください。
DBMSオプションの効果の完全なリストは、「DBMS」にあるDBMSオプションの説明を参照してください。
以前のPro*C/C++リリースと現行のリリースでは、エラーおよび警告コードが異なっています。コードとメッセージの完全なリストは、『Oracle Databaseエラー・メッセージ』を参照してください。
SQLLIBによって発行されるランタイム・メッセージは、以前のPro*C/C++リリースおよびPro*CのリリースではRTL-という接頭辞が付いていましたが、これがSQL-という接頭辞に変更されました。メッセージ・コードは以前のリリースと同じです。
SQLCHECK=SEMANTICSを指定してプリコンパイルする場合、PL/SQLコンパイラでは接頭辞としてPLSが使用されます。このようなエラーは、Pro*C/C++によるものではありません。
LINES=YESの場合、Cコンパイラによって発行されたエラー・メッセージは常に、修正済(プリコンパイル済)のソース・ファイルではなく、元のソース・ファイルを参照します。これにより、ほとんどのデバッガを使用して元のソース・コードを順番に実行できます。「LINES」を参照してください。
既存のPro*C/C++アプリケーションをOracle9i環境で動作させるには、次のアクションを実行する必要があります。
既存のPro*C/C++アプリケーションをOracle9iのSQLLIBライブラリと再リンクします。
これまでPro*C/C++で使用可能だった特定の機能は、Oracle9iではサポートされなくなりました。これには次の機能が該当します。
Windows NTサーバーまたはWindows NTワークステーションが稼働しているコンピュータでの、Pro*C/C++のGraphical User Interface(GUI)
Windows NTサーバーまたはWindows NTワークステーションが稼働しているコンピュータでの、Object Type Translator(OTT)用のPro*C/C++のIntype File Assistant
ログイン・データ領域(LDA)は、Oracle9iではサポートされなくなりました。Oracleの次のバージョンでは、Pro*C/C++プログラムにOCIリリース7コールを埋め込む機能は廃止になります。
Oracle9iへの移行に関する具体的な情報は、『Oracle Databaseアップグレード・ガイド』を参照してください。