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