STRUCTURED型のUDT列、ARRAY列、VARRAY列、Geospatial列、またはPERIOD列でnull属性をサポートする場合、またはnullを返すことのあるマップ順序付けルーチンがUDT、Geospatial、またはPERIOD列に含まれている場合、この型を指定するCREATE TABLE文またはALTER TABLE文には、そのUDT列、ARRAY列、VARRAY列、Geospatial列、またはPERIOD列にNOT NULL属性を指定するようにします。
列でnullが許可されているとともに、この型のためのマップ順序付けルーチンまたはシステム生成のオブザーバー メソッドがnullを返すことができる場合には、NOT CASESPECIFIC属性を持つ列にクエリーを実行するときと似た状況になることがあります。この状況では、いくつかのクエリーに関し、同じリクエストを出してもクエリーごとに結果が異なる可能性があります。
UDTの順序付けルーチンは列値が等しいかどうかを判別するとともに、ソート操作の照合順序も判別します。
この推奨事項に従わない場合、以下の状況が同等に扱われる可能性があります。
- NULL列
- Null属性を含み、マップまたはオブザーバー ルーチンがnullを返すSTRUCTURED型
ある場合にはnullの列が結果セットに返され、別の場合にはnull属性を含んだ非nullのSTRUCTURED型が結果セットに返されます。
以下の単純な例に、テーブル定義でUDTのためにNOT NULL属性を指定する方法を示します。
CREATE TABLE udtTable ( id INTEGER, udtColumn myStructUdtWithNullAttributes NOT NULL);