SQL 解説書

TYPE 述部

>>-expression--+-IS--+-----+---OF-------------------+----------->
               |     '-NOT-'                        |
               | .-IS-.                             |
               '-+----+--+-----+---OF DYNAMIC TYPE--'
                         '-NOT-'
 
        .-,---------------------.
        V                       |
>----(-----+------+--typename---+---)--------------------------><
           '-ONLY-'
 

TYPE 述部 は、 式のタイプと 1 つまたは複数のユーザー定義構造タイプとを比較します。

参照タイプの参照解除を含んでいる式の動的タイプは、 ターゲットのタイプ付き表または視点にある参照される行の実際のタイプです。 これは、その参照を含んでいる式のターゲット・タイプ (式の静的タイプと呼ばれる) とは異なる場合があります。

expression の値がヌルの場合、述部の結果は不明です。 expression の動的タイプが typename で指定された構造タイプの 1 つのサブタイプの場合、 述部の結果は「真」になり、そうでない場合は「偽」になります。 ONLY のあとに typename がある場合、そのタイプの適切なサブタイプは考慮されません。

typename が修飾されていない場合、SQL パスを使用して解決されます。 typename は、 expression の静的タイプのタイプ階層にあるユーザー定義タイプを識別しなければなりません (SQLSTATE 428DU)。

DEREF 関数は、参照タイプの値を含んでいる式が TYPE 述部にある場合はいつでも、 使用されなければなりません。 expression がこの形式の場合の静的タイプは、 参照のターゲット・タイプです。 DEREF 関数の詳細については、DEREFを参照してください。

構文上の IS OF と OF DYNAMIC TYPE は、TYPE 述部では同じ働きをします。 同様に、IS NOT OF と NOT OF DYNAMIC TYPE も TYPE 述部では同じ働きをします。

例:

ある表階層には、タイプ EMP のルート表 EMPLOYEE と、タイプ MGR の副表 MANAGER があります。 別の表 ACTIVITIES は、 REF(EMP) SCOPE EMPLOYEE として定義されている WHO_RESPONSIBLE という列を含んでいます。 WHO_RESPONSIBLE と対応する行が管理者の場合に、 結果が「真」となるタイプ述部を以下に示します。

   DEREF (WHO_RESPONSIBLE) IS OF (MGR)

表にタイプ EMP の列 EMPLOYEE が含まれている場合、EMPLOYEE には、 タイプ EMP の値だけではなく、MGR のようなサブタイプの値を含めることができます。 次のような述部は、

   EMPL IS OF (MGR)

EMPL がヌルではなく、実際に管理職である場合に、「真」を戻します。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]