日本語PDF

SQL/Foundationのオプション機能に対するOracleのサポート

表C-2に、SQL/Foundationのオプション機能に対するOracleのサポートを示します。

表C-2 SQL/Foundationのオプション機能に対するOracleのサポート

機能識別子、機能 サポート

B012、埋込みC

この機能を完全にサポートします。

B013、埋込みCOBOL

この機能を完全にサポートします。

B021、ダイレクトSQL

この機能を完全にサポートします(SQL*Plus)。

B031、基本的な動的SQL

Oracleは、2種類の動的SQLをサポートします。埋込み言語のマニュアルのOracle動的SQLおよびANSI動的SQLに関する説明を参照してください。

ANSI動的SQLは規格の実装であり、次の制限事項があります。

  • Oracleは、記述子の項目のサブセットをサポートします。

  • <句による入力>の場合、Oracleは<入力記述子の使用>のみをサポートします。

  • <句による出力>の場合、Oracleは<記述子への出力>のみをサポートします。

  • 動的パラメータは、コロンの後に疑問符ではなく識別子を指定する形式で示されます。

Oracle動的SQLは規格の動的SQLに似ていますが、次の変更が加えられています。

  • パラメータは、コロンの後に疑問符ではなく識別子を指定する形式で示されます。

  • 規格のDESCRIBE OUTPUTは、OracleのDESCRIBE SELECT LIST FOR文に置き換えられます。

  • Oracleでは、動的SQL文を準備するPREPARE文の前に、その動的SQL文を使用して物理的にカーソルを宣言する場合、DECLARE STATEMENTを使用できます。

B032、拡張動的SQL

ANSI動的SQLでは、Oracleはこの機能からグローバル文およびグローバル・カーソルを宣言する機能のみを実装します。その他の機能はサポートしません。

Oracle動的SQLでは、OracleのDESCRIBE BIND VARIABLESは、規格のDESCRIBE INPUTと同等です。その他の機能はサポートしません。

B122、ルーチン言語C

Oracleは、Cで記述された外部ルーチンをサポートしますが、このようなルーチンを作成する規格構文はサポートしません。

B128、ルーチン言語SQL

OracleはPL/SQLで記述されたルーチンをサポートします。PL/SQLは規格の手続き型言語SQL/PSMと同等なOracleの機能です。

F032、CASCADE削除動作

Oracleでは、DROPコマンドによって削除されたオブジェクトのすべての依存オブジェクトが無効になります。無効になったオブジェクトを正常に再コンパイルできる方法を使用して、削除されたオブジェクトを再定義するまで、無効になったオブジェクトは完全に使用禁止になります。

F033、ALTER TABLE文のDROP COLUMN

OracleはDROP COLUMN句を提供しますが、規格で使用されるRESTRICTまたはCASCADEオプションは提供しません。

F034、拡張REVOKE

Oracleは、この機能の次の部分をサポートします。

  • F034-01、スキーマ・オブジェクトの所有者以外のユーザーによって実行されるREVOKE

  • F034-03、権限受領者がWITH GRANT OPTIONを持つ権限を取り消すREVOKE

Oracleは、この機能のうち、次の部分と同等の機能を提供します。

  • CASCADE: Oracleでは、REVOKEによってすべての依存オブジェクトが無効になります。これにより、この後にCREATEコマンドとGRANTコマンドによって、無効になったオブジェクトが正常に再コンパイルできるようになり、メタデータが変更されるまでは、これらのオブジェクトは完全に使用禁止になります。

F052、期間および日時の算術

Oracleは、INTERVAL YEAR TO MONTHおよびINTERVAL DAY TO SECONDデータ型のみをサポートします。

F111、SERIALIZABLE以外の分離レベル

Oracleは、SERIALIZABLEに加えて、READ COMMITTED分離レベルをサポートします。

F121、基本的な診断管理

この機能の大部分の機能は、埋込み言語のSQLCAによって提供されます。

F191、参照削除アクション

Oracleは、ON DELETE CASCADEおよびON DELETE SET NULLをサポートします。

F200、TRUNCATE TABLE

Oracleはこの機能を完全にサポートしています。また、参照整合性制約で自身を参照する表の切捨てを可能にすることと、ON DELETE CASCADE参照制約が有効にされている子表に向けてカスケードする機能により、この機能を拡張しています。

F231、権限表

Oracleは、この情報を次のメタデータ・ビューで使用可能にします。

  • TABLE_PRIVILEGESのかわりに、ALL_TAB_PRIVSを使用します。

  • COLUMN_PRIVILEGESのかわりに、ALL_COL_PRIVSを使用します。

  • OracleはUSAGE権限をサポートしないため、USAGE_PRIVILEGESと同等の権限は存在しません。

F281、LIKE拡張

この機能を完全にサポートします。

F291、UNIQUE述語

IS A SET条件は、多重集合が集合であるかどうか(各行が一意であるかどうか)のテストに使用できます。したがって、次の

UNIQUE <table subquery>

は、次と同じです。

CAST (<table subquery> AS MULTISET) IS A SET

F302、INTERSECT表演算子

Oracleの構文は、UNIONINTERSECTおよびMINUSの優先順位が同じであるという点で規格と異なります。

F312、MERGE

OracleのMERGE文は規格とほとんど同じですが、次の制限事項があります。

  • Oracleは、表の別名の前のASキーワード(オプション)をサポートしません。

  • Oracleは、表の別名の後にカッコで囲まれた列名のリストを使用して、USING句で指定した表の列名を変更する機能をサポートしません。

  • Oracleは、<上書き句>をサポートしません。

F314、DELETEブランチのあるMERGE

Oracleには、同様の機能があります。ただし、Oracleでは最初に行を更新してから、更新された行が条件を満たした場合に削除できるようになります。

F321、ユーザーの認可

Oracleは、次の副機能と同等の機能を提供します。

  • SESSION_USERのかわりに、SYS_CONTEXT ('USERENV', 'SESSION_USER')の使用

  • CURRENT_USERのかわりに、SYS_CONTEXT ('USERENV', 'CURRENT_USER')の使用

Oracleは、次の副機能をサポートしていません。

  • SYSTEM_USER

  • SET SESSION AUTHORIZATION

F341、使用状況表

Oracleは、この情報をALL_DEPENDENCIESDBA_DEPENDENCIESおよびUSER_DEPENDENCIESビューで使用可能にします。

F381、拡張スキーマ操作

Oracleは、この機能の次の要素を完全にサポートします。

  • Oracleは、ALTER TABLEを使用して、表の制約を追加する規格の構文をサポートします。

Oracleは、この機能の次の要素を部分的にサポートします。

  • Oracleは、表の制約を削除する規格の構文をサポートしますが、RESTRICTはサポートしません。

Oracleは、この機能のうち、次の要素と同等の機能を提供します。

  • 列のデフォルト値を変更するには、ALTER TABLEMODIFYオプションを使用します。

Oracleは、この機能の次の部分をサポートしません。

  • DROP SCHEMA

  • ALTER ROUTINE

F382、列データ型の変更

Oracleは、規格とは異なる構文でこの機能をサポートします。規格を拡張しているため、Oracleでは、列のサイズまたは精度を小さくできます。

F383、Set column not null句

Oracleは、この機能の2つの副機能と同等の機能を提供します。

  • 既存の列にNOT NULL制約を追加するための、ALTER TABLE ... MODIFYの使用

  • NOT NULL制約を削除するための、ALTER TABLEを使用した名前による制約の削除

F384、Drop identity property句

Oracleは、ALTER TABLE ... MODIFY (... DROP IDENTITY)を使用することで、同等の機能を提供します。

F386、Set identity column generation句

Oracleは、同等の機能を提供します。Oracleの構文とセマンティクスは規格と同じですが、次の例外があります。

  • Oracleは、RESTARTをサポートしていません。そのかわりに、START WITHを使用します。ID列を再開すると、そのID列の他のパラメータ値はデフォルトにリセットされます(ただし、ALTER TABLE文で明示的に設定している場合を除く)。

OracleのSTART WITH LIMIT VALUEオプションは、規格に対する拡張です。

F391、長い識別子

Oracleは、最大128文字の識別子をサポートします。

F393、リテラルのUnicodeエスケープ

OracleのUNISTR機能は、すべてのUnicode文字に対する数値のエスケープ・シーケンスをサポートします。

F394、オプションの正規形指定

この機能により、NORMALIZEファンクションおよびIS NORMAL述語にキーワードNFCNFDNFKCおよびNKDが追加されます。これらのキーワードを指定しない場合、NFCがデフォルトです(「T061、UCSのサポート」を参照)。Oracleは、4つすべての正規形を、次のように規格とは異なる構文でサポートします。

  • NFCについては、COMPOSEを使用します。

  • NFDについては、DECOMPOSECANONICALオプションを付けて使用します。

  • NFKDについては、DECOMPOSECOMPATIBILITYオプションを付けて使用します。

  • NFKCについては、DECOMPOSECANONICALオプションとCOMPOSEを付けて使用します。

Oracleは、IS NORMAL述語をサポートしません。

F401、拡張結合表

Oracleは、FULL外部結合、CROSS結合およびNATURAL結合をサポートします。

F402、LOB、配列および多重集合での名前付き列の結合

Oracleは、宣言した型がネストした表である列での名前付き列の結合をサポートします。Oracleは、LOBまたは配列での名前付き列の結合はサポートしません。

F403、パーティション結合表

Oracleは、FULL外部結合を除くこの機能をサポートします。

F411、タイムゾーンの指定

Oracleは、TIMESTAMP WITH TIME ZONEを完全サポートしますが、TIME WITH TIME ZONEはサポートしません。

F421、各国語キャラクタ

この機能を完全にサポートします。

F431、読取り専用のスクロール可能なカーソル

この機能を完全にサポートします。

F441、拡張集合ファンクション・サポート

Oracleは、この機能の次の部分をサポートします。

  • ビューまたはインライン・ビューのいずれかで集計を使用して定義された列を参照するWHERE句の機能

  • 式のDISTINCTを使用しないCOUNT

  • 集計問合せに対する外部参照となる列を参照する集計。ただし、Oracleは集計問合せの定義を、最も内側にある集計を含んでいる問合せとしています。これは、集計内で参照される範囲変数を定義する最も内側の問合せではありません。

F442、集合ファンクションでの複合列の参照

この機能を完全にサポートします。

F461、名前付きの文字セット

Oracleは、Oracle定義の名前が付いた複数の文字セットをサポートします。Oracleは、この機能の他の部分をサポートしません。

F491、制約管理

この機能を完全にサポートします。

F492、オプションの表の制約の強制

規格のENFORCEDは、OracleのENABLE VALIDATEと同じです。規格のNOT ENFORCEDは、OracleのDISABLE NOVALIDATEと同じです。それ以外のENABLE | DISABLEオプション、VALIDATE | NOVALIDATEオプション、およびRELY | NORELYオプションの組合せは、規格の拡張です。

F531、一時表

Oracleは、GLOBAL TEMPORARY表をサポートします。

F555、拡張秒精度

Oracleはこの機能を拡張して、小数点以下9桁までをサポートします。

F561、完全評価式

この機能を完全にサポートします。

F571、真理値テスト

OracleのLNNVLファンクションは、規格のIS NOT TRUE述語と同等です。

F591、導出表

Oracleは<導出表>をサポートしますが、次の制限事項があります。

  • Oracleは、表の別名の前のASキーワード(オプション)をサポートしません。

  • Oracleは、<導出列リスト>をサポートしません。

F641、行コンストラクタおよび表コンストラクタ

Oracleでは、他の行コンストラクタまたは副問合せとの等価性または非等価性の比較に行コンストラクタを使用できます。Oracleは、この機能の他の部分をサポートしません。

F690、照合サポート

OracleのNLSSORTファンクションは、文字式の照合の変更に使用できます。

F693、SQLセッションおよびクライアント・モジュールの照合

セッション照合を設定するには、ALTER SESSION SET NLS_COMP = 'LINGUISTIC'を使用するとともに、必要な照合にNLS_SORTを設定します。Oracleは、クライアント・モジュールの照合をサポートしません。

F695、変換のサポート

OracleのCONVERTファンクションでは、データベース文字セットと各国語文字セット間での変換が可能です。その他の文字セットについては、データをRAWデータ型に格納して、PL/SQLパッケージ・ファンクションUTL_RAW.CONVERTを使用します。Oracleには、文字セットの変換を追加したり、削除する機能はありません。

F721、遅延可能制約

この機能を完全にサポートします。

F731、列INSERT権限

この機能を完全にサポートします。

F761、セッション管理

Oracleは、この機能のうち、次の要素と同等の機能を提供します。

  • 規格のSET SESSION CHARACTERISTICS AS TRANSACTION SERIALIZABLEと同等な機能は、ALTER SESSION SET ISOLATION_LEVEL = SERIALIZABLEです。

  • 規格のSET SCHEMAと同等な機能は、ALTER SESSION SET CURRENT_SCHEMAです。

  • 規格のSET COLLATIONと同等な機能は、ALTER SESSION SET NLS_SORTです。

F763、CURRENT_SCHEMA

Oracleの同等機能は、SYS_CONTEXT ('USERENV', 'CURRENT_SCHEMA')です。

F771、結合管理

OracleのCONNECT文は規格のCONNECT文と同じ機能を持ちますが、構文は異なります。規格のSET CONNECTIONを使用するかわりに、OracleではSQL文を実行する必要のある接続を指定するAT句を提供します。Oracleの埋込み言語では、COMMITまたはROLLBACKRELEASEオプションを使用して接続を切断できます。

F781、自己参照操作

この機能を完全にサポートします。

F801、完全集合ファンクション

この機能を完全にサポートします。

F831、完全カーソル更新

Oracleは、問合せでのFOR UPDATE句とORDER BY句の組合せをサポートします。

F841、LIKE_REGEX述語

OracleではREGEXP_LIKEに相当します。Oracleのパターン構文は規格の機能の一部が欠落しています。Oracleの一致パラメータは一部の綴りが違いますが、規格と同じ機能を持っています。

F842、OCCURRENCES_REGEXファンクション

OracleではREGEXP_COUNTに相当します。Oracleのパターン構文は規格の機能の一部が欠落しています。Oracleの一致パラメータは一部の綴りが違いますが、規格と同じ機能を持っています。

F843、POSITION_REGEXファンクション

OracleではREGEXP_INSTRに相当します。Oracleのパターン構文は規格の機能の一部が欠落しています。Oracleの一致パラメータは一部の綴りが違いますが、規格と同じ機能を持っています。

F844、SUBSTRING_REGEXファンクション

OracleではREGEXP_SUBSTRに相当します。Oracleのパターン構文は規格の機能の一部が欠落しています。Oracleの一致パラメータは一部の綴りが違いますが、規格と同じ機能を持っています。

F845、TRANSLATE_REGEXファンクション

OracleではREGEXP_REPLACEに相当します。Oracleのパターン構文は規格の機能の一部が欠落しています。Oracleの一致パラメータは一部の綴りが違いますが、規格と同じ機能を持っています。

F850、<問合せ式>でのトップレベルの<order by句>

この機能を完全にサポートします。

F851、副問合せでの<order by句>

この機能を完全にサポートします。

F852、ビューでのトップレベルの<order by句>

この機能を完全にサポートします。

F855、<問合せ式>でのネストした<order by句>

この機能を完全にサポートします。

F856、<問合せ式>でのネストした<fetch first句>

この機能を完全にサポートします。

F857、<問合せ式>でのトップレベルの<fetch first句>

この機能を完全にサポートします。

F858、副問合せでの<fetch first句>

この機能を完全にサポートします。

F859、ビューでのトップレベルの<fetch first句>

この機能を完全にサポートします。

F860、<fetch first句>での動的 <fetch first row count>

この機能を完全にサポートします。

F861、<問合せ式>でのトップレベルの<result offset句>

この機能を完全にサポートします。

F862、副問合せでの<result offset句>

この機能を完全にサポートします。

F863、<問合せ式>でのネストした<result offset句>

この機能を完全にサポートします。

F864、ビューでのトップレベルの<result offset句>

この機能を完全にサポートします。

F865、<result offset句>での動的<offset row count>

この機能を完全にサポートします。

F866、FETCH FIRST句: PERCENTオプション

この機能を完全にサポートします。

F867、FETCH FIRST句: WITH TIESオプション

この機能を完全にサポートします。

R010、行パターン認識: FROM

この機能を完全にサポートします。

S023、基本的な構造型

Oracleのオブジェクト型は、規格の構造型と同等です。

S024、拡張構造型

Oracleの構文は規格と異なりますが、次のものと同等の機能を提供します。

  • NOT INSTANTIABLE

  • STATICメソッド

  • RELATIVEMAPおよびSTATEの順序付け。RELATIVE順序付けに相当するOracleのキーワードはORDERです。STATE順序付けに相当するキーワードはありません(他の順序付けが定義されていない場合、これがデフォルトになります)。規格とは異なり、OracleはSTATE以外の順序付けのEQUALS ONLYをサポートしません。(「S251、ユーザー定義の順序付け」も参照。)

  • コンストラクタ・メソッドのシグネチャのSELF AS RESULT

S025、最終構造型

Oracleの最終オブジェクト型は、規格の最終構造型と同等です。

S026、自己参照構造型

Oracleでは、オブジェクト型OTは、OTを参照する参照を持つことができます。

S041、基本的な参照型

Oracleの参照型は、規格の参照型と同等です。参照を解除するには、規格の->のかわりにドット表記法を使用します。

S043、拡張参照型

Oracleは、この機能の次の要素をサポートします。

  • 参照によって参照されるオブジェクトを返すDEREF演算子

  • 表またはマテリアライズド・ビューの列に対する制約としてのSCOPE

  • 列の有効範囲の追加および削除

  • システムが生成した参照または主キーから導出された参照(他の列のリストまたは型の属性のリストから導出されたものを除く)

S051、型の表の作成

Oracleのオブジェクト表は、規格の構造型の表と同等です。

S081、サブテーブル

Oracleはオブジェクト・ビューの階層をサポートしますが、オブジェクトの実表の階層はサポートしません。実表の階層をエミュレートするには、それらの実表にビューの階層を作成します。

S091、基本的な配列のサポート

OracleのVARRAY型は、規格の配列型と同等です。ただし、Oracleは、LOBの配列の記憶域をサポートしません。添字を使用して配列の単一要素にアクセスするには、PL/SQLを使用する必要があります。Oracleは、規格以外の構文を使用してこの機能の次の部分をサポートします。

  • 空の配列を含むVARRAY型のインスタンスを構成するには、VARRAY型コンストラクタを使用します。

  • FROM句でVARRAYをネスト解除するには、TABLE演算子を使用します。

  • VARRAYのカーディナリティを取得するには、PL/SQLのCOUNTメソッドを使用します。

S092、ユーザー定義型の配列

Oracleは、オブジェクト型のVARRAYをサポートします。

S094、参照型の配列

Oracleは、参照のVARRAYをサポートします。

S095、問合せ別の配列コンストラクタ

Oracleは、CAST (MULTISET (SELECT ...) AS varray_type)を使用して配列コンストラクタをサポートします。ORDER BYを使用して配列の要素を順序付ける機能はサポートされません。

S097、配列要素割当て

PL/SQLでは、規格(SQL/PSM)に似た構文を使用して配列要素を割り当てることができます。

S098、ARRAY_AGG

Oracleには、VARRAYになる集計はありません。そのかわりに、COLLECT集計を使用して多重集合を作成すると、配列の要素タイプにキャストできます。

S111、問合せ式でのONLY

Oracleは、ビューの階層に対するONLY句をサポートしますが、実表の階層はサポートしません。

S151、型述語

この機能を完全にサポートします。

S161、サブタイプ処理

この機能を完全にサポートします。

S162、参照のサブタイプ処理

構文が多少異なりますが、サポートします。規格では参照する型の名前をカッコで囲む必要がありますが、Oracleはこの位置でのカッコの使用をサポートしません。

S201、配列でのSQL起動ルーチン

PL/SQLは、配列をパラメータとして渡し、ファンクションの結果として配列を返す機能を提供します。Cで記述されたプロシージャおよびファンクションは、Oracle Type Translator(OTT)を使用して配列を渡し、ファンクションの結果として配列を返すことができます。

S202、多重集合でのSQL起動ルーチン

PL/SQLルーチンは、パラメータとしてネストした表を持ち、ネストした表を返すことができます。Cで記述されたルーチンは、Oracle Type Translatorを使用して配列を渡し、ファンクションの結果として配列を返すことができます。

S232、配列ロケータ

Oracle Type Translatorは配列の記述子をサポートします。記述子はロケータと同じ用途に使用できます。

S233、多重集合ロケータ

Oracleは、ネストした表のロケータをサポートします。

S241、変換ファンクション

Oracle Type Translatorは、変換と同じ機能を提供します。

S251、ユーザー定義の順序付け

Oracleのオブジェクト型の順序付け機能は、次のとおり規格の機能に対応します。

  • OracleのMAP順序付けは、規格のORDER FULL BY MAP順序付けに対応します。

  • OracleのORDER順序付けは、規格のORDER FULL BY RELATIVE順序付けに対応します。

  • Oracleのオブジェクト型でMAPまたはORDERのいずれも宣言されていない場合、これは規格のEQUALS ONLY BY STATEに対応します。

  • Oracleには、順序付けられていないオブジェクト型は存在しません。そのため、順序付けは変更できますが、削除することはできません。

S261、特定のTYPEメソッド

ANYDATA型のGetTypeNameメソッドは、型名を調べるために使用できます。

S271、基本的な多重集合のサポート

Oracleでは、ネストした表型として規格の多重集合がサポートされます。スカラー型(ST)に基づいたOracleのネストした表のデータ型は、規格の用語では、ST型の単一フィールドを持つcolumn_valueという名前の行の多重集合と同じです。オブジェクト型に基づいたOracleのネストした表型は、規格の構造型の多重集合と同等です。

Oracleは、ネストした表で使用するこの機能のうち、次の要素をサポートします。この場合、規格で多重集合に使用するのと同じ構文を使用します。

  • CARDINALITYファンクション

  • SETファンクション

  • MEMBER述語

  • IS A SET述語

  • COLLECT集計

次のように、この機能の他のすべての部分が規格以外の構文でサポートされます。

  • 規格にMULTISET[]と表される、空の多重集合を作成するには、ネストした表型の空のコンストラクタを使用します。

  • 規格では、ELEMENT(<多重集合値の式>)と表される、要素が1つ付いた多重集合の要素を1つのみ取得するには、スカラー副問合せを使用して、ネストした表から単一要素を選択します。

  • 多重集合を列挙ごとに構成するには、ネストした表型のコンストラクタを使用します。

  • 多重集合を問合せごとに構成するには、多重集合の引数を指定したCASTを使用して、ネストした表型にキャストします。

  • 多重集合をネスト解除するには、FROM句のTABLE演算子を使用します。

S272、ユーザー定義型の多重集合

Oracleのネストした表型では、構造型の多重集合が可能です。Oracleには固有型がないため、固有型の多重集合はサポートされません。

S274、参照型の多重集合

ネストした表型は、参照型の列を1つ以上持つことができます。

S275、拡張多重集合のサポート

Oracleは、ネストした表で使用するこの機能のうち、次の要素をサポートします。この場合、規格で多重集合に使用するのと同じ構文を使用します。

  • MULTISET UNIONMULTISET INTERSECTIONおよびMULTISET EXCEPT演算子

  • SUBMULTISET述語

  • =および<>述語

Oracleは、FUSIONまたはINTERSECTION集計をサポートしません。

S281、ネストしたコレクション型

Oracleでは、コレクション型のネストが可能です(VARRAYおよびネストした表)。

S401、配列型に基づく固有型

OracleのVARRAY型は強い型指定です。

S403、ARRAY_MAX_CARDINALITY

PL/SQLでは、VARRAYのLIMITメソッドが最大カーディナリティを返します。

S404、TRIM_ARRAY

PL/SQLでは、VARRAYのTRIMメソッドをVARRAYの切り捨てに使用できます。

T041、基本的なLOBデータ型サポート

Oracleは、この機能の次の部分をサポートします。

  • キーワードBLOBCLOBおよびNCLOB

  • 連結(CLOBでのUPPERLOWER)

Oracleは、この機能のうち、次の部分と同等のサポートを提供します。

  • POSITIONのかわりにINSTRの使用

  • CHAR_LENGTHのかわりにLENGTHの使用。

Oracleは、この機能の次の部分をサポートしません。

  • BLOBCLOBおよびNCLOBのそれぞれのシノニムとしてのキーワードBINARY LARGE OBJECTCHARACTER LARGE OBJECTおよびNATIONAL CHARACTER LARGE OBJECT

  • <バイナリ文字列リテラル>

  • BLOBCLOBの長さの上限を指定する機能

  • BLOBの結合

T042、拡張LOBのサポート

Oracleは、この機能の次の要素を完全にサポートします。

  • CLOB引数のTRIMファンクション

Oracleは、この機能のうち、次の要素と同等の機能を提供します。

  • BLOBおよびCLOBサブストリング(SUBSTRを使用してサポート)

  • SIMILAR述語(REGEXPR_LIKEを使用し、Perlに似た構文とのパターン一致を実行してサポート)

この機能の次の要素はサポートされません。

  • BLOBまたはCLOBオペランドの付いた比較述語

  • BLOBまたはCLOBオペランドの付いたCAST

  • OVERLAY(SUBSTRおよび文字列連結を使用してエミュレート可能)

  • BLOBまたはCLOBオペランドの付いたLIKE述語

T051、行型

Oracleのオブジェクト型は、規格の行型のかわりに使用できます。

T061、UCSのサポート

Oracleは、この機能のうち、次の要素と同等の機能を提供します。

  • Oracleは、文字データ型の宣言では、CHARACTERSOCTETSのかわりに、それぞれCHARBYTEのキーワードをサポートします。

  • OracleのCOMPOSEファンクションは、規格のNORMALIZEファンクションと同等です。

Oracleは、IS NORMALIZED述語をサポートしません。

T071、BIGINTデータ型

多くの実装では、BIGINTは、19桁(10進)の大部分をサポートする64ビットの2進整数型を参照します。OracleのNUMBER型は、39桁(10進)をサポートします。

T111、更新可能な結合、論理和および列

Oracleの更新可能な結合ビューは、規格の更新可能な結合機能と類似しています。規格とは異なり、Oracleでは、SELECT構文のリストに強力な候補キーを表示するために、更新可能な結合ビューは必要ありません。更新可能な結合ビューには複数のキー保存表が含まれることがありますが、UPDATEまたはDELETEを使用して更新されるキー保存表は、それらのうちの1つの表のみです。更新可能な結合に含まれるすべてのキー保存表が変更される規格とは異なります。

T121、問合せ式でのWITH(RECURSIVEを除く)

この機能を完全にサポートします。

T122、副問合せでのWITH(RECURSIVEを除く)

この機能を完全にサポートします。

T131、再帰的問合せ

Oracleは自身を参照するWITH句要素の使用をサポートしますが、RECURSIVEキーワードはサポートしません。または、OracleのSTART WITHおよびCONNECT BY句を使用すると、多くの再帰的問合せを実行できます。

T132、副問合せでの再帰的問合せ

Oracleは自身を参照するWITH句要素の使用をサポートしますが、RECURSIVEキーワードはサポートしません。または、OracleのSTART WITHおよびCONNECT BY句を使用すると、多くの再帰的問合せを実行できます。

T141、SIMILAR述語

Oracleは、Perlに似た構文とのパターン一致のためのREGEXP_LIKEを提供します。

T172、表定義のAS副問合せ句

OracleのCREATE TABLEAS副問合せ機能は、規格とほとんど同じ機能を持ちますが、構文の一部が異なります。

T174、ID列

Oracleはこの機能をサポートしますが、構文には次のような相違点があります。

  • Oracleでは、規格のNO MINVALUEおよびNO MAXVALUEのかわりに、NOMINVALUEおよびNOMAXVALUEを使用します。

  • ID列を再開するには、ALTER TABLE MODIFY文でSTART WITH LIMIT VALUEを使用して、最高値(増分ID列の場合)または最低値(減分ID列の場合)から再開します。特定の番号から再開するには、START WITH Numberを使用します。

GENERATED BY DEFAULT ON NULLは、Oracleの拡張機能です。

T175、生成された列

Oracleはこの機能をサポートしますが、次の制限事項があります。

  • 一時表では生成された列はサポートされていません。

  • 生成された列のデータ型にはLOBまたはXMLを使用できません。

T176、順序ジェネレータのサポート

Oracleの順序は規格のものと同じ機能を持ちますが、構文は異なります。

T178、ID列: 簡易再開オプション

OracleのSTART WITH LIMIT VALUEは、ID列が循環していない場合は規格の簡易再開と同じです。

T180、システムバージョン付きの表

Oracleのフラッシュバック機能は、規格のシステムバージョン付きの表と実質的に同じです。主な相違点は次のとおりです。

  • Oracleでは、特定の表をジャーナリング用に指定する必要はありません。すべての表がジャーナリングされます。

  • Oracleでは、LOB列は個別にジャーナリング用に指定する必要があります。これは、データ量が巨大になる可能性があるためです。規格には、同様のプロビジョニングはありません。

  • Oracleでは、履歴データを読み取るために権限が必要です。

  • 規格では、ジャーナリングされた表には、行の開始と終了のタイムスタンプを記録するための列があります。Oracleでは、これは疑似列によってプロビジョニングされます。

T181、アプリケーション期間表

Oracleは、この機能の次の要素をサポートします。

  • CREATE TABLE中のアプリケーション期間定義

  • ALTER TABLEを使用したアプリケーション期間定義の追加および削除。構文が多少異なり、Oracleでは期間指定をカッコで囲む必要がありますが、規格ではこの位置でのカッコの使用はサポートされません。

Oracleではこの機能を次のように拡張しています。

  • 表ごとに複数のアプリケーション期間を指定できます。

  • 開始時間と終了時間の列をオプションにできます。この場合、これらの列は暗黙的に作成されます。

  • 開始時間列にNULLを指定することで、終了時間列の値以前の時点を示すすべての行が有効とみなされるようにできます。

  • 終了時間列にNULLを指定することで、開始時間列の値以降の時点を示すすべての行が有効とみなされるようにできます。

  • フラッシュバック問合せのオプションVERSIONS PERIOD FORAS OF PERIOD FORを使用して、アプリケーション期間表を問い合せることができます。

T201、参照制約での比較可能データ型

この機能を完全にサポートします。

T211、基本的なトリガー機能

Oracleのトリガーと規格のトリガーの違いは、次のとおりです。

  • Oracleは、デフォルトではオプションの構文FOR EACH STATEMENT(文トリガー)を提供しません。

  • Oracleは、OLD TABLEおよびNEW TABLEをサポートしません。規格で指定されている遷移表(影響される行のイメージの前後の多重集合)は使用できません。

  • トリガー本体はPL/SQLで記述されています。PL/SQLの機能は規格の手続き型言語PSMと同等ですが、同じものではありません。

  • トリガー本体では、古い遷移変数と新しい遷移変数が、コロンで始まる形式で参照されます。

  • Oracleの行トリガーは、バッファリングおよびすべての行の処理後にまとめて実行されるのではなく、行の処理と同時に実行されます。規格のセマンティクスは決定的ですが、Oracleのリアルタイムで実行される行トリガーはより実用的です。

  • Oracleの行および文の前のトリガーではDML文を実行できますが、規格では許可されていません。これに対し、Oracleの行の後の文ではDML文を実行できませんが、規格では許可されています。

  • 複数のトリガーが適用される場合、規格ではそれらのトリガーは定義順に実行されます。Oracleでは、実行順序は、非決定的になります(FOLLOWSを使用して指定した場合を除く)。

  • Oracleでは、規格の(表権限の)TRIGGER権限のかわりに、システム権限CREATE TRIGGERおよびCREATE ANY TRIGGERを使用してトリガーの作成を規制します。

T212、拡張トリガー機能

この機能によって、Oracleがサポートする文トリガーが許可されます(「T211、基本的なトリガー機能」を参照)。

T213、INSTEAD OFトリガー

OracleはビューのINSTEAD OFトリガーをサポートします。「T211、基本的なトリガー機能」で説明した内容を除き、構文およびセマンティクスは規格に準拠します。Oracleは、WITH CHECK OPTIONを指定したビューで、INSTEAD OFトリガーを使用できます。これは、規格とは異なります。

T241、START TRANSACTION

OracleのSET TRANSACTION文は、規格のSET TRANSACTIONではなく、規格のSTART TRANSACTIONと同等のトランザクションを開始します。OracleのREAD ONLYトランザクションはSERIALIZABLE分離レベルです。

T271、セーブポイント

Oracleはこの機能をサポートしますが、次の制限事項があります。

  • Oracleは、RELEASE SAVEPOINTをサポートしません。

  • Oracleは、セーブポイント・レベルをサポートしません。

T285、拡張導出列名

この機能は、列の別名を指定せず、SQLパラメータ参照で構成されるSELECT構文のリストの導出列にのみ適用されます。この場合、規格と同様に、列名のデフォルトはパラメータ名になります。

T323、外部ルーチンの明示的なセキュリティ

外部ファンクション、プロシージャまたはパッケージの作成時に使用されるOracleの構文AUTHID { CURRENT USER | DEFINER }は、規格のEXTERNAL SECURITY { DEFINER | INVOKER }と同等です。

T324、SQLルーチンの明示的なセキュリティ

PL/SQLファンクション、プロシージャまたはパッケージの作成時に使用されるOracleの構文AUTHID { CURRENT USER | DEFINER }は、規格のSQL SECURITY { DEFINER | INVOKER }と同等です。

T325、修飾されたSQLパラメータ参照

PL/SQLは、ルーチン名を使用したパラメータ名の修飾をサポートします。

T326、表ファンクション

Oracleは、この機能のうち、次の要素と同等の機能を提供します。

  • <問合せ別の多重集合値コンストラクタ>は、CAST(MULTISET(<問合せ式>)AS <ネストした表型>)を使用してサポートされます。

  • <表ファンクションの導出表>は、VARRAYまたはネストした表を引数として指定したFROM句のTABLE演算子を使用してサポートされます。

  • <コレクション値の式>は、VARRAYまたはネストした表になるOracleの式と同等です。

  • <戻り値の表型>は、ネストした表を戻すPL/SQLファンクションと同等です。

T331、基本的なロール

Oracleは、REVOKE ADMIN OPTION FORの<ロール名>を除いて、この機能をサポートします。

T341、SQL起動ファンクションおよびプロシージャのオーバーロード

Oracleは、ファンクションおよびプロシージャのオーバーロードをサポートします。ただし、特定のデータ型の組合せを処理するルールは、規格と異なります。たとえば、規格では、引数の数値型のみが異なる同一名の2つのファンクションの共存が許可されますが、Oracleでは許可されません。

T351、大カッコで囲まれたコメント

この機能を完全にサポートします。

T431、拡張グループ化機能

この機能を完全にサポートします。

T432、ネストおよび連結したGROUPING SETS

Oracleは、連結したGROUPING SETSをサポートしますが、ネストしたGROUPING SETSはサポートしません。

T433、複数引数ファンクションGROUPING

OracleのGROUP_IDファンクションを使用すると、グループ化した問合せによりグループを適切に区別できます。このファンクションは、規格の複数引数のGROUPINGファンクションの場合と同じ用途で使用できます。

T441、ABSおよびMODファンクション

OracleはABSファンクションをサポートします。OracleのMODファンクションは規格に似ていますが、2つの引数の符号が異なる場合の動作が異なります。

T471、結果セットの戻り値

PL/SQL REFカーソルは、規格の結果セット・カーソルのすべての機能を提供します。

T491、LATERAL導出表

この機能を完全にサポートします。

T501、拡張EXISTS述語

この機能を完全にサポートします。

T511、トランザクションのカウント

Oracleは、コミットされたトランザクションとロールバックされたトランザクションのカウントを、システム・ビューのV$STATNAMEV$SESSTATでサポートします。

T521、CALL文の名前付き引数

この機能を完全にサポートします。

T522、SQL起動プロシージャのINパラメータのデフォルト値

この機能を完全にサポートします。

T524、CALL文以外のルーチンの起動での名前付き引数

この機能を完全にサポートします。

T525、SQL起動ファンクションのパラメータのデフォルト値

この機能を完全にサポートします。

T571、配列を戻す外部SQL起動ファンクション

VARRAYを戻すOracleの表ファンクションは、外部のプログラミング言語で定義できます。SQLでこのようなファンクションを宣言する場合は、CREATE FUNCTIONコマンドをPIPELINED USING句とともに使用します。

T572、多重集合を戻す外部SQL起動ファンクション

ネストした表を戻すOracleの表ファンクションは、外部のプログラミング言語で定義できます。SQLでこのようなファンクションを宣言する場合は、CREATE FUNCTIONコマンドをPIPELINED USING句とともに使用します。ファンクションの本体では、OCITableインタフェースを使用します。ファンクションは、FROM句のTABLE演算子内で起動する必要があります。

T581、正規表現のサブストリング・ファンクション

Oracleでは、正規表現の一致を使用してサブストリング操作を実行するREGEXP_SUBSTRファンクションを提供します。

T591、NULLの可能性のある列に対するUNIQUE制約

Oracleでは、NULLであることが可能な1つ以上の列に対するUNIQUE制約が可能です。UNIQUE制約の対象が単一列の場合、セマンティクスは規格と同じになります(この制約には、指定した列のNULLである行の数に制限はありません)。UNIQUE制約の対象が2つ以上の列の場合、セマンティクスは規格外になります。Oracleでは、指定したすべての列のNULLである行の数に制限はありません。規格と異なり、指定した列の1つ以上の行がNULL以外になる場合、制約対象のNULL以外の列の値と同じ値を持つ別の行は、制約違反になり、許可されません。

T611、基本的なOLAP演算子

Oracleはこの機能を完全にサポートします。ただし、DISTINCTは、ウィンドウ・パーティショニングと併用している場合にのみサポートされます(ウィンドウ・フレーミングと併用している場合はサポートされません)。

T612、拡張OLAP操作

Oracleは、この機能の次の要素をサポートします。PERCENT_RANKCUME_DISTWIDTH_BUCKET、仮想の集合ファンクション、PERCENTILE_CONTPERCENTILE_DISC、およびROW_NUMBERです。

Oracleは、この機能の次の要素をサポートしません。

  • ORDER BYのないROW_NUMBER

T613、サンプリング

Oracleでは、規格のキーワードTABLESAMPLEのかわりに、キーワードSAMPLEを使用します。Oracleでは、規格のキーワードSYSTEMのかわりに、キーワードBLOCKを使用します。Oracleでは、行のベルヌーイ・サンプリングの指定に、BLOCKキーワードを使用しません。規格では、キーワードBERNOULLIでこのサンプリングを指定します。Oracleは、キー保存していない導出表や導出ビューサンプリングをサポートしていません。Oracleでは、DELETE文、UPDATE文またはMERGE文の副問合せでのサンプリングはできません。

T614、NTILEファンクション

この機能を完全にサポートします。

T615、LEADファンクションおよびLAGファンクション

この機能を完全にサポートします。

T616、LEADファンクションおよびLAGファンクションのNULL処理オプション

この機能を完全にサポートします。

T617、FIRST_VALUEファンクションおよびLAST_VALUEファンクション

この機能を完全にサポートします。

T618、NTH_VALUEファンクション

この機能を完全にサポートします。

T621、拡張数値ファンクション

Oracleは、CEILファンクションのCEILINGの綴りが異なることを除いて、この機能を完全にサポートします。

T622、三角法ファンクション

この機能を完全にサポートします。

T623、一般的な対数ファンクション

この機能を完全にサポートします。

T625、LISTAGG

この機能を完全にサポートします。

T641、複数列の割当て

割当てソースが副問合せの場合、複数の列を割り当てる規格の構文がサポートされます。

T652、SQLルーチンでのSQL動的文。

PL/SQLは、動的SQLをサポートします。

T654、外部ルーチンでのSQL動的文

Oracleは、埋込みCでの動的SQLをサポートします。これは、外部ルーチンの作成に使用できます。

T655、循環的な依存ルーチン

PL/SQLは、再帰型をサポートします。

T811、基本SQL/JSONコンストラクタ・ファンクション

Oracleはこの機能を完全にサポートしています(問合せによるJSON_ARRAYコンストラクタを除く)。

T812、SQL/JSON: JSON_OBJECTAGG

この機能を完全にサポートします。

T813、SQL/JSON: JSON_ARRAYAGGORDER BY

この機能を完全にサポートします。

T821、基本的なSQL/JSON問合せ演算子

この機能を完全にサポートします。

T822、SQL/JSON: IS JSON WITH UNIQUE KEYS述語

この機能を完全にサポートします。

T823、SQL/JSON: PASSING

Oracleは、JSON_EXISTSPASSING句をサポートします。

T825、SQL/JSON: ON EMPTYおよびON ERROR

Oracleは、次の制限事項を除き、この機能を完全にサポートします。

  • JSON_EXISTSON ERROR句はUNKNOWNをサポートしません。

  • JSON_TABLEは、列レベルのON EMPTY句をサポートしません。

T828、JSON_QUERY

この機能を完全にサポートします。

T829、JSON_QUERY: 配列ラッパー・オプション

この機能を完全にサポートします。

T832、SQL/JSONパス言語: アイテム・メソッド

Oracleは、次のアイテム・メソッドを完全にサポートします。

  • abs

  • ceiling

  • double

  • floor

Oracleは、次の同等のサポートを提供します。

  • dateおよびtimestampは、標準のdatetimeに相当します

Oracleでは、次のアイテム・メソッドをサポートしてこの機能を拡張しています。

  • length

  • lower

  • number

  • string

  • upper

T833、SQL/JSONパス言語: 複数の添字

添字を厳密に単調増加する順序で指定する必要がある点を除き、Oracleはこの機能を完全にサポートします。

T834、SQL/JSONパス言語: ワイルドカード・メンバー・アクセサ

この機能を完全にサポートします。

T835、SQL/JSONパス言語: フィルタ式

Oracleでは、JSON_EXISTSのSQL/JSONパス式の最後のステップとしてフィルタ式をサポートします。

T839、文字列へ、または文字列からのdatetimeの書式指定されたキャスト

Oracleは、構文上の多少の相違を除いてこの機能をサポートします。Oracleでは、キーワードFORMATではなくカンマを使用します。