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
トリガーを定義して、この列の更新を操作します。