6.5 オブジェクト・ビューにおけるNULLオブジェクトの識別

オブジェクト・ビュー内のNULLオブジェクトを識別できます。

オブジェクトのコンストラクタからNULLが戻されることはないため、前述のビュー(例6-2)において、リレーショナル表の中のcity、streetなどの列がすべてNULLであっても、アドレス・オブジェクトがNULLになることはありません。リレーショナル表には、部門の住所がNULLかどうかを指定する列はありません。

  • DECODEファンクションまたは他のファンクションを使用して、NULLまたは構成されたオブジェクトのいずれかを戻します。

例6-3では、NULLのdeptstreet列を使用して住所全体がNULLであることを示すことができます。

NULLのdeptstreet列を使用して住所全体がNULLであることを示すことができます。

例6-3 オブジェクト・ビューにおけるNULLオブジェクトの識別

-- Requires Ex. 6-2
CREATE OR REPLACE VIEW dept_view AS
  SELECT d.deptno, d.deptname,
        DECODE(d.deptstreet, NULL, NULL, 
        address_t(d.deptstreet, d.deptcity, d.deptstate, d.deptzip)) AS deptaddr
  FROM dept d;

部門の住所はリレーショナル表の中の列と直接対応していないため、この方法を使用すると、ビューを介して部門の住所を直接更新できなくなります。この方法ではなく、ビュー上にINSTEAD OFトリガーを定義して、この列の更新を操作します。