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

前
 
次
 

Core SQL:2008に対するOracleの準拠

ANSIおよびISOのSQL規格では、規格準拠性について明示する箇所に、準拠の種類および実装されている機能について記載することを義務付けています。規格準拠性についての最小限の明示をCore SQL:2008といいます。これは、規格のPart 2「SQL/Foundation」およびPart 11「SQL/Schemata」に定義されています。次の製品は、後続の表に示すCore SQL:2008に完全(または部分的)に準拠しています。

SQL規格準拠機能は、移植性の指針または機能性の指針として使用できます。移植性の観点からは、ユーザーは、規格の機能の正確な構文とセマンティクスの両方の準拠性に関心があります。機能性の観点からは、ユーザーは正確な構文よりもセマンティクスの問題に関心を持ちます。この付録の表では、規格の構文およびセマンティクスのサポートに関して次の用語を使用します。

表C-1に、Core SQL:2008の機能に対するOracleのサポートを示します。

表C-1 Core SQL:2008の機能に対するOracleのサポート

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

E011、数値データ型

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

E021、文字データ型

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

  • E021-01、CHARACTERデータ型

  • E021-07、文字の連結

  • E021-08、UPPERおよびLOWERファンクション

  • E021-09、TRIMファンクション

  • E021-10、文字データ型間の暗黙的な加算

次の副機能を部分的にサポートします。

  • E021-02、CHARACTER VARYINGデータ型(Oracleは、長さ0のVARCHAR文字列とNULLを区別しません)

  • E021-03、文字リテラル(Oracleは、長さ0のリテラル''をNULLとみなします)

  • E021-12、文字の比較(Oracleの規則は、比較する2つの文字列の短い方に埋込みを行うという点で規格とは異なります)

Oracleは、次の副機能と同等の機能を持ちます。

  • E021-04、CHARACTER_LENGTHファンクションのかわりに、LENGTHファンクションを使用します。

  • E021-05、OCTET_LENGTHファンクションのかわりに、LENGTHBファンクションを使用します。

  • E021-06、SUBSTRINGファンクションのかわりに、SUBSTRファンクションを使用します。

  • E021-11、POSITIONファンクションのかわりに、INSTRファンクションを使用します。

E031、識別子

Oracleはこの機能をサポートしますが、次の例外があります。

  • 引用識別子内で二重引用符を使用するためのエスケープ・シーケンスはサポートされません。

  • 非引用識別子はOracleの予約語とは異なる場合があります(Oracleの予約語のリストは規格のリストとは異なります)。

  • 引用識別子の場合でも、ROWIDという列名は許可されていません。

この機能は次のように拡張されます。

  • 識別子は最大30文字まで指定可能です。

  • 非引用識別子にはドル記号($)またはシャープ記号(#)を指定可能です。

E051、基本的な問合せ指定

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

  • E051-01、SELECT DISTINCT

  • E051-02、GROUP BY

  • E051-04、SELECT構文のリストにない列をGROUP BYに含めることができます。

  • E051-05、SELECT構文のリスト項目の名前の変更

  • E051-06、HAVING

  • E051-07、SELECT構文のリストでの*の修飾

次の副機能を部分的にサポートします。

  • E051-08、FROM句の相関名(Oracleは、相関名をサポートしますが、オプションのASキーワードはサポートしません)

Oracleは、次の副機能と同等の機能を持ちます。

  • E051-09、FROM句での列の名前の変更(FROM句の副問合せで列名を変更できます)

E061、基本的な述語および検索条件

Oracleはこの機能を完全にサポートしますが、Oracleの文字列比較は規格とは異なります。規格では、長さが異なる2つの文字列を比較する場合、空白または実際のすべての文字よりも小さい仮想の文字が短い文字列に埋め込まれます。埋込みの判断はキャラクタ・セットに基づいて行われます。Oracleでは、この判断は、比較対象が固定長または可変長のどちらかによって決まります。

E071、基本的な問合せ式

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

  • E071-01、UNION DISTINCT表演算子

  • E071-02、UNION ALL表演算子

  • E071-05、表演算子によって結合された列の型は同じでなくてもかまいません。

  • E071-06、副問合せの表演算子

Oracleは、次の副機能と同等の機能を持ちます。

  • E071-03、EXCEPT DISTINCT表演算子(EXCEPT DISTINCTのかわりにMINUSを使用します)

E081、基本的な権限

Oracleは、E081-09、USAGE権限を除いて、この機能のすべての副機能を完全にサポートします。規格では、USAGE権限を持つユーザーは、ドメイン、照合、キャラクタ・セット、文字変換、ユーザー定義型および順序ジェネレータを使用できます。Oracleは、ドメインまたは文字変換をサポートしません。照合およびキャラクタ・セットにアクセスするには権限は必要ありません。ユーザー定義型を使用するためのOracleの権限は、EXECUTEです。順序型を使用するためのOracleの権限は、SELECTです。

E091、集合ファンクション

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

E101、基本的なデータ操作

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

E111、単一行のSELECT

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

E121、基本的なカーソルのサポート

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

  • E121-02、ORDER BY列は、SELECT構文のリストになくてもかまいません。

  • E121-03、ORDER BY句の値の式

  • E121-04、OPEN

  • E121-06、位置付けされたUPDATE

  • E121-07、位置付けされたDELETE

  • E121-08、CLOSE

Oracleは、次の副機能の部分的なサポートを提供します。

  • E121-01、DECLARE CURSOR: FOR READ ONLY構文の場合を除き、完全にサポートされます。

  • E121-10、FETCH文、暗黙的なNEXT: ノイズ・ワードFROMの場合を除き、完全にサポートされます。

Oracleは、次の副機能の拡張サポートを提供します。

  • E121-17、WITH HOLDカーソル(規格では、カーソルはROLLBACK中は保持されませんが、OracleではROLLBACK中も保持されます。)

E131、NULL値のサポート

Oracleはこの機能を完全にサポートしますが、Oracleでは文字列型のNULLを長さが0(ゼロ)の文字列と区別できないという例外があります。

E141、基本的な整合性制約

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

E151、トランザクションのサポート

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

E152、基本的なSET TRANSACTION

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

E153、副問合せを持つ更新可能な問合せ

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

E161、先頭に2つの負の符号(-)を付けたSQL文のコメント

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

E171、SQLSTATEのサポート

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

E182、モジュール言語

OracleはAdaについてのみこの機能をサポートします。

F021、基本的な情報スキーマ

Oracleはこの機能のビューを持ちません。ただし、同じ情報を別のメタデータ・ビューで使用可能にします。

  • TABLESのかわりに、ALL_TABLESを使用します。

  • COLUMNSのかわりに、ALL_TAB_COLUMNSを使用します。

  • VIEWSのかわりに、ALL_VIEWSを使用します。

    ただし、ユーザーのビューにWITH CHECK OPTIONが定義されていたり、更新可能な場合は、OracleのALL_VIEWSは表示されません。ビューにWITH CHECK OPTIONが定義されているかどうかを確認する場合は、ALL_CONSTRAINTSを使用し、TABLE_NAMEをそのビュー名にして、CONSTRAINT_TYPEが'V'であるビューを検索します。

  • TABLE_CONSTRAINTSREFERENTIAL_CONSTRAINTSおよびCHECK_CONSTRAINTSのかわりに、ALL_CONSTRAINTSを使用します。

    ただし、OracleのALL_CONSTRAINTSは、制約が遅延可能か初期遅延かは表示しません。

F031、基本的なスキーマ操作

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

  • F031-01、実表を作成するためのCREATE TABLE

  • F031-02、CREATE VIEW

  • F031-03、GRANT

次の副機能を部分的にサポートします。

  • F031-04、ALTER TABLE文のADD COLUMN句(Oracleは、この構文のオプションのキーワードCOLUMNをサポートしません。また、規格とは異なりますが、Oracleでは列定義をカッコで囲む必要があります。)

次の副機能はサポートしません(Oracleは、キーワードRESTRICTをサポートしません)。

  • F031-13、DROP TABLE文のRESTRICT

  • F031-16、DROP VIEW文のRESTRICT

  • F031-19、REVOKE文のRESTRICT

(OracleのDROPコマンドは、すべての依存するオブジェクトを連鎖的に削除したり依存するオブジェクトがある場合に削除を禁止するかわりに、依存するオブジェクトを無効にすることで、ユーザー操作なしに後で再検証できるように規格を拡張しています。)

F041、基本的な結合表

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

F051、基本的な日付および時刻

次の副機能を除き、この機能を完全にサポートします。

  • F051-02、TIMEデータ型

  • F051-07、LOCALTIME

F081、ビューのUNIONおよびEXCEPT

OracleはビューのUNIONを完全にサポートします。規格のEXCEPTと同等なOracleの機能はMINUSと呼ばれ、ビューで完全にサポートされます。

F131、グループ操作

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

F181、複数モジュールのサポート

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

F201、CASTファンクション

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

F221、明示的なデフォルト

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

F261、CASE

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

F311、スキーマ定義文

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

F471、スカラー副問合せの値

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

F481、拡張NULL述語

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

F501、機能および準拠するビュー

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

F812、基本的なフラグ付け

Oracleは、フラガーを持っていますが、SQL:2008よりもSQL-92に準拠しています。

S011、固有型

固有型は、強い型指定のスカラー型です。固有型は、1つの属性のみを持つオブジェクト型を使用して、Oracleでエミュレートできます。USER_DEFINED_TYPESと呼ばれる規格の情報スキーマ・ビューは、Oracleのメタデータ・ビューALL_TYPESと同じです。

T321、基本的なSQL起動ルーチン

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

  • T321-03、ファンクションの起動

  • T321-04、CALL

Oracleは、次の副機能を異なる構文でサポートします。

  • T321-01、オーバーロードしないユーザー定義ファンクション

  • T321-02、オーバーロードしないユーザー定義プロシージャ

Oracleの構文CREATE FUNCTIONおよびCREATE PROCEDUREと規格の構文の違いは、次のとおりです。

  • 規格の構文では、パラメータのモード(INOUTまたはINOUT)はパラメータ名の前ですが、Oracle構文では、パラメータ名の後です。

  • 規格の構文では、INOUTを使用しますが、Oracleの構文では、IN OUTを使用します。

  • Oracleの構文では、復帰型の後およびルーチン本体の定義の前にISまたはASが必要ですが、規格の構文では、必要ありません。

  • ルーチンの本体がCである場合、そのルーチンに名前を付けるとき、規格の構文では、キーワードLANGUAGE C EXTERNAL NAMEを使用しますが、Oracleの構文では、LANGUAGE C NAMEを使用します。

  • ルーチンの本体がSQLである場合、Oracleでは、プロシージャを独自に拡張したPL/SQLを使用します。

Oracleは、次の副機能をPL/SQLではサポートしますが、Oracle SQLではサポートしません。

  • T321-05、RETURN

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

  • T321-06、ROUTINESビュー: ALL PROCEDURESメタデータ・ビューを使用します。

  • T321-07、PARAMETERSビュー: ALL_ARGUMENTSメタデータ・ビューおよびALL_METHOD_PARAMSメタデータ・ビューを使用します。

T631、1つのリスト要素を使用したIN述語

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