この章では、Oracleプリコンパイラについて説明します。Oracleデータを操作するアプリケーション・プログラムを開発する上でのプリコンパイラの役割と、プリコンパイラによりアプリケーションで実行できる処理について学習します。この章の項目は次のとおりです。
Oracleプリコンパイラとは、高水準ホスト・プログラムで埋込みSQL文を使用可能にするプログラミング・ツールです。図1-1のように、プリコンパイラはホスト・プログラムを入力として受け入れ、埋込みSQL文を標準Oracleランタイム・ライブラリ・コールに変換して、コンパイル、リンクおよび実行が可能なソース・プログラムを生成します。
Oracleプリコンパイラには2種類あります(すべてのシステムで使用可能というわけではありません)。次の高水準言語がサポートされています。
C/C++
COBOL
異なるアプリケーション分野用で、異なる設計理念を反映するこれらの言語は、様々なプログラミング上のソリューションを提供します。
注意: このマニュアルは、C/C++およびCOBOLでのプリコンパイラ使用の手引書と合せて参照してください。 |
Pro*FORTRANおよびSQL*Module for Adaはメンテナンス・モードであり、これらの製品のバージョン1は、リリース1.6以上の追加機能で強化されることはありません。ただし、オラクル社では、不具合が報告され、修正されるたびに、引き続きパッチ・リリースを発行します。
Oracleプリコンパイラを使用すると、アプリケーション・プログラムに柔軟なSQLを組み込むことができます。CやCOBOLなどの普及している高水準言語でSQLを使用できます。便利で使用しやすいインタフェースにより、アプリケーションからOracleに直接アクセスできます。
多くのアプリケーション開発ツールとは異なり、Oracleプリコンパイラでは、アプリケーションを高度にカスタマイズできます。たとえば、最新のウィンドウ機能およびマウス技術を取り込んだユーザー・インタフェースを作成できます。ユーザーとの対話なしに、バックグラウンドで実行するアプリケーションも作成できます。
さらに、Oracleプリコンパイラは、アプリケーションの微調整に役立ちます。リソースの使用状況、SQL文の実行状況および各種ランタイム・インジケータを綿密に監視できます。この情報に基づいて、最大のパフォーマンスが得られるようにプログラム・パラメータを調整できます。
Oracleデータにアクセスし、それを操作するには、SQLが必要です。SQLを対話形式で使用するか、アプリケーション・プログラムに埋め込むかは、実行する作業によって決まります。ジョブにCまたはCOBOLの手続き型処理機能が必要な場合や、ジョブを定期的に実行する場合は、埋込みSQLを使用してください。
SQLは、柔軟かつ強力で、しかも覚えやすいという特長から、好んで使用されるデータベース言語となりました。SQLは、非手続き型言語であるため、処理方法を指定せずに要求内容を指定できます。英文に似た少数の文を使用して、Oracleデータを1行ずつまたは複数行を一度に容易に操作できます。
任意(SQL*Plus以外)のSQL文をアプリケーション・プログラムから実行できます。たとえば、次のようなSQL文です。
データベース表の動的なCREATE
、ALTER
およびDROP
データ行のSELECT
、INSERT
、UPDATE
およびDELETE
トランザクションのCOMMIT
またはROLLBACK
SQL文は、アプリケーション・プログラムに埋め込む前に、SQL*Plusを使用して対話形式でテストできます。通常は、わずかな変更によって対話型SQLから埋込みSQLに切り替えることができます。
SQLを拡張したPL/SQLは、手続き型構造体、変数宣言および強力なエラー処理をサポートするトランザクション処理言語です。同じPL/SQLブロック内で、SQLおよびPL/SQLの拡張機能のすべてを使用できます。
埋込みPL/SQLの主な利点は、パフォーマンスの向上です。SQLとは異なり、PL/SQLでは、SQL文を論理的にグループ化し、1文ずつではなくブロック単位でOracleに送ることができます。これにより、ネットワークの通信量と処理のオーバーヘッドが減少します。
アプリケーション・プログラムの埋込み方法を含め、PL/SQLの詳細は、第6章「Oracleプリコンパイラの実行」を参照してください。
図1-2のように、Oracleプリコンパイラには多くの機能と利点があり、効果的で信頼性の高いアプリケーションの開発に役立ちます。
たとえば、Oracleプリコンパイラでは次のことが可能です。
6種の高水準言語のいずれでもアプリケーションを作成
動的SQL(プログラム実行時に有効なSQL文の受入れや作成が可能な高度なプログラミング技術)の利用
高度にカスタマイズしたアプリケーションの設計および開発
Oracleの内部のデータ型と高水準言語のデータ型との間の自動変換
アプリケーション・プログラムへのPL/SQLトランザクション処理ブロック埋込みによるパフォーマンスの向上
便利なプリコンパイラ・オプションの指定およびプリコンパイル中の値の変更
データ型の同値化を使用した、Oracleによる入力データの解析および出力データの書式設定方法の制御
複数のプログラム・モジュールを個別にプリコンパイルし、それらをリンクして1つの実行可能プログラムにすること
埋め込まれたSQLデータ操作文とPL/SQLブロックの構文およびセマンティックのチェック
複数のノード上のOracleデータベースへのSQL*Netを使用した同時アクセス
入力プログラム変数および出力プログラム変数としての配列の使用
ホスト・プログラムを異なる環境で実行できるように、コード・セクションを条件付きでプリコンパイル
高水準言語で作成されたユーザー・イグジットを使用した、Oracle FormsやOracle Reportsなどのツールとのインタフェース接続
ANSI承認の状態変数SQLSTATEおよびSQLCODE、SQL通信領域(SQLCA)およびWHENEVER文を使用したエラーと警告の処理
Oracle通信領域(ORACA)で提供される強力な診断機能の使用
要するに、Oracleプリコンパイラは、専門的な埋込みSQLプログラミング技法をサポートする多機能ツールです。
SQLは、リレーショナル・データベース管理システムにとっての標準言語となりました。この項では、次の機関によって規定された最新のSQL標準に対するOracleプリコンパイラの準拠の状況について説明します。
これらの機関では、SQLを次の出版物で定義されたものとして採用しています。
ANSI Document ANSI X3.135-1992, Database Language SQL
International Standard ISO/IEC 9075:1992, Database Language SQL
ANSI Document ANSI X3.168-1992, Database Language Embedded SQL
NIST Federal Information Processing Standard FIPS PUB 127-2, Database Language SQL
ANSI X3.135-1992(非公式にはSQL92として知られる)では、適合するSQL言語が指定され、段階的に実装できるように、次の3つの言語レベルが定義されています。
Full SQL
Intermediate SQL(Full SQLのサブセット)
Entry SQL(Intermediate SQLのサブセット)
適合するSQL実装は、最低でもEntry SQLをサポートする必要があります。
ANSI X3.168-1992では、COBOL、FORTRAN、PascalまたはPL/Iなどの標準的なプログラミング言語で書かれたアプリケーション・プログラムに、SQL文を埋め込むための構文およびセマンティックが指定されています。
ISO/IEC 9075-1992では、ANSI規格が完全に採用されています。
FIPS PUB 127-2(連邦用に取得されたRDBMSソフトウェアに適用)では、ANSI規格も採用されています。さらに、データベース構造体用の最小サイズ設定パラメータを指定し、ANSI拡張機能を識別するためにFIPSフラガーを必要とします。
ANSI規格のコピーが必要な場合は、次の宛先にお問合せください。
American National Standards Institute 1430 Broadway New York, NY 10018, USA
ISO規格のコピーが必要な場合は、任意のISO加盟機関の国家規格局にお問合せください。NIST規格のコピーについては、次の宛先にお問合せください。
National Technical Information ServiceU.S. Department of Commerce Springfield, VA 22161, USA
FIPS PUB 127-1によれば、「この標準によって指定されていない追加機能を提供する実装では、非準拠SQL言語または非準拠の方法で処理される可能性のある準拠SQL言語にフラグを付けるオプションも提供される」となっています。この要件を満たすために、OracleプリコンパイラにはFIPSフラガーが用意されており、ANSI拡張機能にフラグを付けます。拡張機能は、権限執行規則を除く、ANSI書式または構文規則に違反するSQL要素です。標準SQLに対するOracle拡張機能の一覧は、『Oracle Database SQL言語リファレンス』を参照してください。
FIPSフラガーは次のものを識別するために使用できます。
アプリケーションを非準拠環境に移す場合に、変更が必要になる可能性のある非準拠SQL要素
別の処理環境で異なった動作をする可能性のある準拠SQL要素
したがって、FIPSフラガーは、移植性のあるアプリケーションの開発に役立ちます。
FIPS
というオプションは、FIPSフラガーを制御します。FIPSフラガーを有効にするには、FIPS=YES
をインラインまたはコマンドラインで指定します。コマンドライン・オプションFIPS
の詳細は、「FIPS」を参照してください。
NISTでは、約300のテスト・プログラムから成るSQLテスト・スイートを使用して、OracleプリコンパイラがANSI Entry SQLに準拠しているかどうかのテストを実施しました。具体的には、これらのプログラムにより、COBOLおよびFORTRAN埋込みSQL標準に対する適合性がテストされました。結果として、Oracleプリコンパイラは100% ANSIに準拠していることが保証されました。
テストの詳細は、次の宛先にお問合せください。
National Computer Systems LaboratoryAttn: Software Standards Testing ProgramNational Institute of Standards and TechnologyGaithersburg, MD 20899, USA