SQL エンティティ (列など) が持っているデータの種類を指定します。
概要
データ型は、列が保持する値の種類を指定します。SQL 式を定義するときは、以下のテーブルの左側の列に記載されている DDL データ型を指定できます。指定された DDL データ型は、右側の列に記載されている Caché データ型にマップされます。
Important:
以下に示す DDL または Caché の各データ型の式は、実際は 1 つのつながった文字列です。これらの文字列にはスペース文字が含まれるものもありますが、通常、空白はいっさい使用されません。以下のテーブルにある一部の空白は、読みやすくする目的で使用されています。
DDLデータ型 対応する Caché データ型
BIGINT %Library.BigInt
BINARY VARYING(%1) %Library.Binary(MAXLEN=%1)
BINARY(%1) %Library.Binary(MAXLEN=%1)
BIT %Library.Boolean
CHAR %Library.String(MAXLEN=1)
CHAR VARYING(%1) %Library.String(MAXLEN=%1)
CHAR(%1) %Library.String(MAXLEN=%1)
CHARACTER %Library.String(MAXLEN=1)
CHARACTER VARYING(%1) %Library.String(MAXLEN=%1)
CHARACTER(%1) %Library.String(MAXLEN=%1)
DATE %Library.Date
DATETIME %Library.TimeStamp
DEC %Library.Numeric (MAXVAL=999999999999999, MINVAL=-999999999999999, SCALE=0)
DEC(%1) %Library.Numeric (MAXVAL=<|'$$maxval^%apiSQL(%1,0)'|>, MINVAL=<|'$$minval^%apiSQL(%1,0)'|>, SCALE=0)
DEC(%1,%2) %Library.Numeric (MAXVAL=<|'$$maxval^%apiSQL(%1,%2)'|>, MINVAL=<|'$$minval^%apiSQL(%1,%2)'|>, SCALE=%2)
DECIMAL %Library.Numeric (MAXVAL=999999999999999, MINVAL=-999999999999999, SCALE=0)
DECIMAL(%1) %Library.Numeric (MAXVAL=<|'$$maxval^%apiSQL(%1,0)'|>, MINVAL=<|'$$minval^%apiSQL(%1,0)'|>, SCALE=0)
DECIMAL(%1,%2) %Library.Numeric (MAXVAL=<|'$$maxval^%apiSQL(%1,%2)'|>, MINVAL=<|'$$minval^%apiSQL(%1,%2)'|>, SCALE=%2)
DOUBLE %Library.Float
DOUBLE PRECISION %Library.Float
FLOAT %Library.Float
FLOAT(%1) %Library.Float (MAXVAL=<|'$$maxval^%apiSQL(%1)'|>, MINVAL=<|'$$minval^%apiSQL(%1)'|>)
IMAGE BStream%String
INT %Library.Integer (MAXVAL=2147483647, MINVAL=-2147483648)
INTEGER %Library.Integer (MAXVAL=2147483647, MINVAL=-2147483648)
LONG CStream%String
LONG BINARY BStream%String
LONG RAW BStream%String
LONG VARCHAR(%1) CStream%String
LONG VARCHAR CStream%String
LONGVARBINARY BStream%String
LONGVARBINARY(%1) BStream%String
LONGVARCHAR CStream%String
LONGVARCHAR(%1) CStream%String
MONEY %Library.Currency(MAXVAL=922337203685477.5807, MINVAL=-922337203685477.5808, SCALE=4)
NATIONAL CHAR %Library.String(MAXLEN=1)
NATIONAL CHAR VARYING(%1) %Library.String(MAXLEN=%1)
NATIONAL CHAR(%1) %Library.String(MAXLEN=%1)
NATIONAL CHARACTER %Library.String(MAXLEN=1)
NATIONAL CHARACTER VARYING(%1) %Library.String(MAXLEN=%1)
NATIONAL CHARACTER(%1) %Library.String(MAXLEN=%1)
NATIONAL VARCHAR(%1) %Library.String(MAXLEN=%1)
NCHAR %Library.String(MAXLEN=1)
NCHAR(%1) %Library.String(MAXLEN=%1)
NTEXT CStream%String
NUMBER %Library.Numeric(SCALE=0)
NUMBER(%1) %Library.Numeric (MAXVAL=<|'$$maxval^%apiSQL(%1)'|>, MINVAL=<|'$$minval^%apiSQL(%1)'|>, SCALE=0)
NUMBER(%1,%2) %Library.Numeric (MAXVAL=<|'$$maxval^%apiSQL(%1,%2)'|>, MINVAL=<|'$$minval^%apiSQL(%1,%2)'|>, SCALE=%2)
NUMERIC %Library.Numeric (MAXVAL=999999999999999, MINVAL=-999999999999999, SCALE=0)
NUMERIC(%1) %Library.Numeric (MAXVAL=<|'$$maxval^%apiSQL(%1,0)'|>, MINVAL=<|'$$minval^%apiSQL(%1,0)'|>, SCALE=0)
NUMERIC(%1,%2) %Library.Numeric (MAXVAL=<|'$$maxval^%apiSQL(%1,%2)'|>, MINVAL=<|'$$minval^%apiSQL(%1,%2)'|>, SCALE=%2)
NVARCHAR(%1) %Library.String(MAXLEN=%1)
NVARCHAR(%1,%2) %Library.String(MAXLEN=%1)
RAW(%1) %Library.Binary(MAXLEN=%1)
REAL %Library.Float
SMALLINT %Library.SmallInt
SMALLMONEY %Library.Currency
TEXT CStream%String
TIME %Library.Time
TIMESTAMP %Library.TimeStamp
TINYINT %Library.TinyInt
VARBINARY(%1) %Library.Binary(MAXLEN=%1)
VARCHAR(%1) %Library.String(MAXLEN=%1)
VARCHAR(%1,%2) %Library.String(MAXLEN=%1)
VARCHAR2(%1) %Library.String(MAXLEN=%1)
ストリーム・データ型
ストリーム・データ型は、SQL スカラ集約、および単項関数の引数として使用できません。これらの関数にストリーム・データ型を使用すると、SQLCODE -37 エラー・コードが返されます。
DDL データ型マッピングのオンライン表示
上記のテーブルで DDL および Caché データ型式に示された構文は、DDL から Caché へのデータ型マッピングを定義する際に、Caché 構成マネージャで使用される構文です。Caché 構成マネージャで [詳細] タブの [SQL] オプションを展開し、[システム DDL データ型マッピング] を表示します。以下のように、内容が表示されます。
構成マネージャ、SQL、システム DDL データ型マッピング
DDL データ型マッピングの理解
DDL から Caché にデータ型をマッピングするとき、通常のパラメータと関数パラメータに以下の規則が適用されます。
ユーザ定義の DDL データ型の作成
単一のパラメータ値に対して、データ型のマッピングをオーバーライドできます。ユーザ定義の値を追加して [システム DDL データ型マッピング] テーブルの既定の設定をオーバーライドするには、構成マネージャの [ユーザ DDL データ型マッピング] テーブルを使用します。
例えば、VARCHAR(100)%String(MAXLEN=100) にマップしたくないとします。このマッピングをオーバーライドするには、以下の手順に従って、VARCHAR(100) の新しい DDL データ型を [ユーザ DDL データ型マッピング] テーブルに追加します。構成マネージャの [詳細] タブの [SQL] で、[システム DDL データ型マッピング] の直後にある [ユーザ DDL データ型マッピング] カテゴリを選択して、[追加] ボタンをクリックします。[新しい SQL ユーザ定義データ型の追加] ダイアログが表示されます。以下に示すように、SQL DDL データ型を入力します。
     VARCHAR(100)
データ型を入力したら、この DDL データ型から有効な Caché データ型の式へのマッピングを定義する必要があります。以下の操作を行います。Caché 構成マネージャ[ユーザ DDL データ型マッピング] で新しい DDL データ型を選択して、[変更] ボタンをクリックします。[プロパティ変更] ダイアログが表示されます。以下に示すように、Caché データ型の式を入力します。
     MyString100(MAXLEN=100) 
結果として、[ユーザ DDL データ型マッピング] に以下に示すエントリが表示されます。
VARCHAR(100)=MyString100(MAXLEN=100) 
ユーザ定義 DDL データ型を入力する際には、前の例に示したような、いくつかの便利なルーチンを使用できます。
DDL データ型を、Stream のコレクション型を持つ Caché プロパティにマップする必要がある場合は、テーブル内の Caché データ型として Character Streams には CStream%String を、Binary Streams には BStream%String をそれぞれ指定します。
DDL マッピングが見つからない場合のデータ型の処理
[ユーザ DDL データ型マッピング] テーブルの DDL データ型列にないデータ型が DDL で検出されると、次に [システム DDL データ型マッピング] テーブルが調べられます。どちらのテーブルにもデータ型マッピングがない場合は、そのデータ型は変換されず、DDL で指定されているクラス定義に直接渡されます。
例えば、以下のフィールド定義が DDL 文にあるとします。
     CREATE TABLE TestTable (
          Field1 %String,
          Field2 %String(MAXLEN=45)
          )
上記の定義では、%String%String(MAXLEN=%1)、または %String(MAXLEN=45) のマッピングが、[ユーザ DDL データ型マッピング][システム DDL データ型マッピング] に見つからない場合、%String%String(MAXLEN=45) 型が適切なクラス定義に直接渡されます。
データ型の変換
特定の型から別の型にデータ型を変換するには、CAST または CONVERT 関数を使用します。
CAST は、一部の文字列データ型と数値データ型に加えて、DATE、TIME、および TIMESTAMP への変換をサポートします。
CONVERT には、2 通りの構文形式があります。両方の形式が、DATE、TIME、および TIMESTAMP データ型との相互変換、およびその他のデータ型間での変換をサポートします。
関連項目