subtype-treatment |--TREAT--(--expression--AS--data-type--)-----------------------|
subtype-treatment は、構造タイプの式を、 そのサブタイプのいずれかへキャストするときに使います。 expression の静的タイプは、ユーザー定義構造タイプでなければなりません。 このタイプは、data-type と同じタイプであるか、 またはそのスーパータイプでなければなりません。 data-type のタイプ名が修飾されていない場合は、 SQL パスを使用してタイプ参照を解決します。 subtype-treatment の結果の静的タイプは data-type であり、 subtype-treatment の値は expression の値になります。 実行時に、expression の動的タイプが data-type ではないか、 data-type のサブタイプでない場合、エラーが戻されます (SQLSTATE 0D000)。
SELECT TREAT (CIRCLE_COL AS COLOREDCIRCLE)..RGB() FROM RINGS
実行時に、動的タイプ CIRCLE のインスタンスが存在する場合、エラーになります (SQLSTATE 0D000)。 このエラーは、次に示すように、CASE 式の中で TYPE 述部を使うことで避けることができます。
SELECT (CASE WHEN CIRCLE_COL IS OF (COLOREDCIRCLE) THEN TREAT (CIRCLE_COL AS COLOREDCIRCLE)..RGB() ELSE NULL END) FROM RINGS
詳細については、TYPE 述部を参照してください。