プライマリ・コンテンツに移動
Oracle® Database SQL言語リファレンス
11gリリース2 (11.2)
B56299-08
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

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

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

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

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

B012、埋込みC

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

B013、埋込みCOBOL

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

B014、埋込みFortran

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

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と同等です。その他の機能はサポートしません。

B111、モジュール言語Ada

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

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はこの機能を完全にサポートし、参照整合性制約で自身を参照する表の切捨てが可能になるように拡張しています。

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はINTERSECTをサポートしますが、INTERSECT ALLはサポートしません。Oracleの構文は、UNIONINTERSECTおよびMINUSの優先順位が同じであるという点で規格と異なります。

F312、MERGE

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

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

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

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

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は、規格とは異なる構文でこの機能をサポートします。

F391、長い識別子

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

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、各国語キャラクタ

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

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

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

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

  • 式のDISTINCTを使用しないCOUNT

  • 集計問合せに対する外部参照となる列を参照する集計

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

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

F461、名前付きのキャラクタ・セット

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

F491、制約管理

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

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です。

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の一致パラメータは一部の綴りが違いますが、規格と同じ機能を持っています。

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演算子を使用します。

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

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

S094、参照型の配列

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

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

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

S097、配列要素割当て

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

S111、問合せ式でのONLY

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

S151、型述語

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

S161、サブタイプ処理

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

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

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およびネストした表)。

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

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

  • キーワードBLOBCLOBおよびNCLOB

  • 連結(CLOBでのUPPERLOWERおよびTRIM)

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

  • POSITIONのかわりにINSTRの使用。

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

  • SUBSTRINGのかわりにSUBSTRの使用。

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

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

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

  • LOBやCLOBの長さの上限を指定する機能

  • 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の更新可能な結合ビューは、規格の更新可能な結合機能のサブセットです。

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副問合せ機能は、規格とほとんど同じ機能を持ちますが、構文の一部が異なります。

T175、生成された列

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 複数のトリガーが適用される場合、規格ではそれらのトリガーは定義順に実行されます。Oracleでは、実行順序は非決定的です。

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

T212、拡張トリガー機能

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

T213、INSTEAD OFトリガー

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

T241、START TRANSACTION

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

T271、セーブポイント

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

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

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

T285、拡張導出列名

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

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

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

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の<ロール名>を除いて、この機能をサポートします。

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導出表

OracleのFROM句のTABLE演算子は、コレクション式についてのみ、規格のLATERAL演算子と同等です。

T501、拡張EXISTS述語

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

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演算子

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

T612、拡張OLAP操作

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

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

  • ウィンドウ名

  • ORDER BY句のないROW_NUMBER

T613、サンプリング

Oracleでは、規格のキーワードTABLESAMPLEのかわりに、キーワードSAMPLEを使用します。Oracleでは、規格のキーワードSYSTEMのかわりに、キーワードBLOCKを使用します。Oracleでは、行のベルヌーイ・サンプリングの指定に、BLOCKキーワードを使用しません。規格では、キーワードBERNOULLIでこのサンプリングを指定します。

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

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

T641、複数列の割当て

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

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

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

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

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

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

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