SQL 概説

ユーザー定義タイプ

固有タイプ は、 内部表現の点では既存のタイプ (その「ソース」タイプ) と同じですが、 別のものとみなされて、ほとんどの演算に関して互換性のないユーザー定義データ・タイプです。 たとえば、年齢タイプ、体重タイプ、 および身長タイプを定義する場合です。それらは意味はみな違いますが、 その内部表現としては組み込みデータ・タイプ INTEGER を使います。

次の例は、PAY という固有タイプを作成する例です。

          CREATE DISTINCT TYPE PAY AS DECIMAL(9,2) WITH COMPARISONS

PAY の表現は組み込みデータ・タイプ DECIMAL(9,2) と同じですが、 別個のタイプとみなされ、DECIMAL(9,2) やその他のタイプとは互換性がありません。 それと同じ固有タイプとしか比較できません。 また、DECIMAL を操作するための演算子と関数は、ここでは適用されません。 たとえば、PAY データ・タイプの値に INTEGER データ・タイプの値を乗算することはできません。 したがって、PAY データ・タイプだけに適用される関数を作成する必要があります。

固有データ・タイプを使うと、 うっかりミスをある程度防ぐことができます。 たとえば、EMPLOYEE 表の SALARY 列が PAY データ・タイプとして定義されている場合、 それと COMM とはソース・タイプが同じではありますが、 それを COMM に加算することはできません。

固有データ・タイプではキャストがサポートされています。 ソース・タイプを固有データ・タイプにキャストしたり、 固有データ・タイプをソース・タイプにキャストしたりできます。 たとえば、EMPLOYEE 表の SALARY 列が PAY データ・タイプとして定義されている場合、 次の例は比較演算子のところでエラーにはなりません。

     SELECT * FROM EMPLOYEE
        WHERE DECIMAL(SALARY) = 41250

DECIMAL(SALARY) は、10 進数のデータ・タイプを戻します。 逆に、数値データ・タイプを PAY タイプにキャストすることもできます。 たとえば、 PAY(41250) を使うことによっても、 数値 41250 をキャストできます。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]