TYPE 述部
TYPE 述部 は、 式のタイプと 1 つまたは複数のユーザー定義構造化タイプとを比較します。
参照タイプの間接参照に関与した式の動的タイプは、 ターゲットの型付き表またはビューにある参照される行の実際のタイプです。 これは、その参照に関与した式のターゲット・タイプ (式の静的タイプと呼ばれる) とは異なる場合があります。
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 ではなく、実際に管理職である場合に、「真」を戻します。