TYPE 述部

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

Read syntax diagramSkip visual syntax diagramexpression ISNOTOFISNOTOF DYNAMIC TYPE ( ,ONLYtypename )

参照タイプの間接参照に関与した式の動的タイプは、 ターゲットの型付き表またはビューにある参照される行の実際のタイプです。 これは、その参照に関与した式のターゲット・タイプ (式の静的タイプと呼ばれる) とは異なる場合があります。

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

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

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

構文上の 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 が NULL ではなく、実際に管理職である場合に、「真」を戻します。