1 概要
この章では、Oracleプリコンパイラについて説明します。Oracleデータを操作するアプリケーション・プログラムを開発する上でのプリコンパイラの役割と、プリコンパイラによりアプリケーションで実行できる処理について学習します。次の項目について説明します。
1.1 Oracleプリコンパイラ
Oracleプリコンパイラとは、高水準ホスト・プログラムで埋込みSQL文を使用可能にするプログラミング・ツールです。図1-1のように、プリコンパイラはホスト・プログラムを入力として受け入れ、埋込みSQL文を標準Oracleランタイム・ライブラリ・コールに変換して、コンパイル、リンクおよび実行が可能なソース・プログラムを生成します。
1.1.1 代替言語
Oracleプリコンパイラには2種類あります(すべてのシステムで使用可能というわけではありません)。次の高水準言語がサポートされています。
-
C/C++
-
COBOL
異なるアプリケーション分野用で、異なる設計理念を反映するこれらの言語は、様々なプログラミング上のソリューションを提供します。
ノート:
このマニュアルは、C/C++およびCOBOLでのプリコンパイラ使用の手引書と合せて参照してください。
Pro*FORTRANおよびSQL*Module for Adaはメンテナンス・モードであり、これらの製品のバージョン1は、リリース1.6以上の追加機能で強化されることはありません。ただし、オラクル社では、不具合が報告され、修正されるたびに、引き続きパッチ・リリースを発行します。
1.2 Oracleプリコンパイラを使用する理由
Oracleプリコンパイラを使用すると、アプリケーション・プログラムに柔軟なSQLを組み込むことができます。CやCOBOLなどの普及している高水準言語でSQLを使用できます。便利で使用しやすいインタフェースにより、アプリケーションからOracleに直接アクセスできます。
多くのアプリケーション開発ツールとは異なり、Oracleプリコンパイラでは、アプリケーションを高度にカスタマイズできます。たとえば、最新のウィンドウ機能およびマウス技術を取り込んだユーザー・インタフェースを作成できます。また、ユーザーとの対話なしに、バックグラウンドで実行するアプリケーションも作成できます。
さらに、Oracleプリコンパイラは、アプリケーションの微調整に役立ちます。リソースの使用状況、SQL文の実行状況および各種ランタイム・インジケータを綿密に監視できます。得られた情報に基づいて、最大のパフォーマンスが実現できるようにプログラムのパラメータを調整できます。
1.3 SQLを使用する理由
Oracleデータにアクセスして操作するには、SQLが必要です。SQLを対話形式で使用するか、アプリケーション・プログラムに埋め込んで使用するかは、作業の内容によって異なります。ジョブにCまたはCOBOLの手続き型処理機能が必要な場合や、ジョブを定期的に実行する場合は、埋込みSQLを使用してください。
SQLは、その柔軟で強力な特性、および習得が容易であることから、最もすぐれたデータベース言語となりました。非手続き型言語であるため、処理方法を指定せずに要求内容を指定できます。英文に似た少数の文で、Oracleデータを一度に1行または複数行ずつ簡単に操作できます。
任意の(SQL*Plus以外の) SQL文をアプリケーション・プログラムから実行できます。たとえば、次のようなSQL文です。
-
データベース表の動的な
CREATE
、ALTER
およびDROP
-
データ行の
SELECT
、INSERT
、UPDATE
およびDELETE
-
トランザクションの
COMMIT
またはROLLBACK
SQL文は、アプリケーション・プログラムに埋め込む前に、SQL*Plusを使用して対話形式でテストできます。通常は、わずかな変更によって対話型SQLから埋込みSQLに切り替えることができます。
1.4 PL/SQLを使用する理由
SQLを拡張したPL/SQLは、手続き型構造体、変数宣言および強力なエラー処理をサポートするトランザクション処理言語です。同じPL/SQLブロック内で、SQLおよびPL/SQLの拡張機能のすべてを使用できます。
埋込みPL/SQLの主な利点は、パフォーマンスの向上です。SQLとは異なり、PL/SQLでは、SQL文を論理的にグループ化し、1文ずつではなくブロック単位でOracleに送ることができます。これにより、ネットワークの通信量と処理のオーバーヘッドが減少します。
アプリケーション・プログラムの埋込み方法を含め、PL/SQLの詳細は、Oracleプリコンパイラの実行を参照してください。
1.5 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プログラミング技法をサポートする多機能ツールです。
1.6 業界標準を満たすOracleプリコンパイラ
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』
1.6.1 要件
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
1.6.3 FIPSフラガー
FIPS PUB 127-1によれば、「この標準によって指定されていない追加機能を提供する実装では、非準拠SQL言語または非準拠の方法で処理される可能性のある準拠SQL言語にフラグを付けるオプションも提供される」となっています。この要件を満たすために、OracleプリコンパイラにはFIPSフラガーが用意されており、ANSI拡張機能にフラグを付けます。拡張機能は、権限執行規則を除く、ANSI書式または構文規則に違反するSQL要素です。標準SQLに対するOracle拡張機能の一覧は、『Oracle Database SQL言語リファレンス』を参照してください。
FIPSフラガーは次のものを識別するために使用できます。
-
アプリケーションを非準拠環境に移す場合に、変更が必要になる可能性のある非準拠SQL要素
-
別の処理環境で異なった動作をする可能性のある準拠SQL要素
したがって、FIPSフラガーは、移植性のあるアプリケーションの開発に役立ちます。
1.6.4 FIPSオプション
FIPS
というオプションは、FIPSフラガーを制御します。FIPSフラガーを有効にするには、FIPS=YES
をインラインまたはコマンドラインで指定します。コマンドライン・オプションFIPS
の詳細は、FIPSを参照してください。
1.6.5 認定
NISTでは、約300のテスト・プログラムから成るSQLテスト・スイートを使用して、OracleプリコンパイラがANSI Entry SQLに準拠しているかどうかのテストを実施しました。具体的には、これらのプログラムにより、COBOLおよびFORTRAN埋込みSQL標準に対する適合性がテストされました。結果として、Oracleプリコンパイラは100% ANSIに準拠していることが保証されました。
テストの詳細は、次の宛先にお問合せください。:
National Computer Systems Laboratory
Attn: Software Standards Testing Program
National Institute of Standards and Technology
Gaithersburg, MD 20899, USA