CREATE TYPE MAPPING ステートメント

CREATE TYPE MAPPING ステートメントは、データ・タイプ間のマッピングを定義します。

以下のデータ・タイプ間のマッピングを定義できます。
  • フェデレーテッド・データベースに定義される予定の、 データ・ソース表またはビューの列のデータ・タイプ。
  • フェデレーテッド・データベースに定義済みの、対応するデータ・タイプ。
マッピングによって、フェデレーテッド・データベース・データ・タイプを 以下に含まれているデータ・タイプに関連付けることができます。
  • 指定したデータ・ソース
  • データ・ソースの範囲。例えば、特定のタイプおよびバージョンのすべてのデータ・ソース

データ・タイプのマッピングは、 既存のデータ・タイプでは不十分な場合にのみ作成する必要があります。

ニックネームの作成時または表の作成時 (透過 DDL) に複数のタイプ・マッピングが適用できる場合、 最新のマッピングが適用されます。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込んだり、動的 SQL ステートメントを使用して発行したりすることができます。 これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。

許可

このステートメントの 許可 ID が持つ特権には、DBADM 権限が含まれている必要があります。

構文

Read syntax diagramSkip visual syntax diagramCREATE TYPE MAPPINGtype-mapping-name 1 FROMTO LOCAL TYPElocal-data-type TOFROM remote-serverREMOTETYPEdata-source-data-typeFOR BIT DATA(p[p..p],s,[s..s])P=SP>SP<SP>=SP<=SP<>S
local-data-type
Read syntax diagramSkip visual syntax diagrambuilt-in-type
built-in-type
Read syntax diagramSkip visual syntax diagramSMALLINTINTEGERINTBIGINTDECIMALDECNUMERICNUM(5,0)( integer,0, integer)FLOAT(53)( integer)REALDOUBLEPRECISIONCHARACTERCHAR(1)( integerOCTETS)VARCHARCHARACTERCHARVARYING( integerOCTETS)FOR BIT DATACLOBCHARACTERCHARLARGE OBJECT(1M)( integerKMGOCTETS)GRAPHIC(1)( integerCODEUNITS16)VARGRAPHIC( integerCODEUNITS16)DBCLOB(1M)( integerKMGCODEUNITS16)BLOBBINARY LARGE OBJECT(1M)( integerKMG)DATETIMETIMESTAMP(6)(integer)XMLBOOLEAN
remote-server
Read syntax diagramSkip visual syntax diagramSERVERserver-nameSERVER TYPEserver-typeVERSIONserver-versionWRAPPERwrapper-name
server-version
Read syntax diagramSkip visual syntax diagramversion.release.modversion-string-constant
Notes:
  • 1 Both a TO and a FROM keyword must be present in the CREATE TYPE MAPPING statement.

説明

タイプ・マッピング名
データ・タイプ・マッピングに名前を付けます。 この名前は、カタログで既に記述されている データ・タイプ・マッピングを指定するものであってはなりません。 type-mapping-name を指定しなければ、ユニークな名前が生成されます。
FROM または TO
リバースまたはフォワード・タイプ・マッピングを指定します。
FROM
local-data-type が続く場合はフォワード・タイプ・マッピングを、 remote-server が続く場合はリバース・タイプ・マッピングを指定します。
今後
remote-server が続く場合はフォワード・タイプ・マッピングを、 local-data-type が続く場合はリバース・タイプ・マッピングを指定します。
ローカル・データ・タイプ
フェデレーテッド・データベースに定義したデータ・タイプを指定します。 local-data-type がスキーマ名なしで指定される場合、 SQL パスでスキーマを検索することにより、タイプ名は解決されます。

パラメーター化データ・タイプには、空の括弧を使用できます。 特定の長さ、位取り、または精度を指定して定義可能なデータ・タイプのことを、 パラメーター化データ・タイプといいます。 フォワード・タイプ・マッピングに CHAR() のような空の括弧を指定すると、 長さはリモート表の列の長さから判別されます。 リバース・タイプ・マッピングに空の括弧を指定すると、 タイプ・マッピングはどの長さのデータ・タイプにも適用されます。 括弧をすべて省略した場合は、データ・タイプのデフォルト長が使用されます。

FLOAT() は、パラメーター値によって異なるデータ・タイプ (REAL または DOUBLE) を表すので、使用できません (SQLSTATE 42601)。 また、NUMBER() も、パラメーター値によって異なるデータ・タイプ (DECFLOAT または DECIMAL) を表すので、使用できません (SQLSTATE 42601)。

DECFLOAT は、 ローカル・データ・タイプ by Oracle ラッパー、 IBM® Db2 Version 9.5 以降の Db2® ラッパーとしてのみ受け入れることができます。

local-data-type をユーザー定義タイプにすることはできません (SQLSTATE 42611)。

built-in-type
組み込みデータ・タイプの説明については、『CREATE TABLE』を参照してください。
サーバー server-name
data-source-data-type が定義されているデータ・ソースを指名します。
サーバー・タイプ server-type
data-source-data-type が定義されているデータ・ソースのタイプを指定します。
バージョン
data-source-data-type が定義されているデータ・ソースのバージョンを指定します。
version
バージョン番号を指定します。 値は整数でなければなりません。
リリース
version で示されたバージョンのリリース番号を指定します。 値は整数でなければなりません。
修正
release で示されたリリースのモディフィケーション番号を指定します。 値は整数でなければなりません。
バージョン・ストリング定数
バージョンの正式名称を指定します。 version-string-constant は単一値 (例えば、'8i') にすることができます。あるいは、versionrelease、そして該当する場合は mod を連結した値にすることができます (例えば、'8.0.3')。
WRAPPER ラッパー名
server-type および server-version に示されたタイプおよびバージョンのデータ・ソースと対話するために、フェデレーテッド・サーバーが使用するラッパーの名前を指定します。
TYPE データ・ソース・データ・タイプ
ローカル・データ・タイプへ、またはローカル・データ・タイプからマッピングされるデータ・ソースのデータ・タイプを指定します。

パラメーター化データ・タイプには、空の括弧を使用できます。 フォワード・タイプ・マッピングに CHAR() のような空の括弧を指定すると、 タイプ・マッピングはどの長さのデータ・タイプにも適用されます。 リバース・タイプ・マッピングに空の括弧を指定すると、 長さは透過 DDL に指定されている列の長さから判別されます。 括弧をすべて省略した場合は、データ・タイプのデフォルト長が使用されます。

data-source-data-type は、組み込みデータ・タイプでなければなりません。 ユーザー定義タイプを指定することはできません。

server-name がタイプ・マッピングとともに指定されているか、 または既存のサーバーがタイプ・マッピングの影響を受ける場合、 タイプ・マッピング作成時に data-source-data-typep、 および s が検査されます (SQLSTATE 42611)。

p
p が指定されている場合、 p と等しい長さまたは精度を持つデータ・タイプだけがタイプ・マッピングの影響を受けます。
[p1..p2]
フォワード・タイプ・マッピングのみ。 10 進データ・タイプの場合、p1p2 は 値が取る最小および最大桁数を指定します。 ストリング・データ・タイプの場合、 p1p2 は値が取る 最小および最大文字数を指定します。 いずれにせよ、最大値は最小値以上の値にする必要があります。 また、最大値と最小値は両方とも、 そのデータ・タイプに関して有効なものでなければなりません。
s
s が指定されている場合、位取りが s であるデータ・タイプだけがタイプ・マッピングの影響を受けます。
[s1..s2]
フォワード・タイプ・マッピングのみ。 10 進データ・タイプの場合、 s1s2 は小数点以下の桁数の最小および最大数を指定します。 最大値は最小値以上の値にする必要があります。また、最大値と最小値は両方とも、 そのデータ・タイプに関して有効なものでなければなりません。
P [オペランド] S
10 進データ・タイプの場合、 P [operand] S は精度と小数点以下の最大桁数との比較を指定します。 例えば、operand (オペランド) に = を指定すると、 精度と小数部分に許容できる最大桁数が同じである場合に、 タイプ・マッピングが適用されることを示します。
FOR BIT DATA
data-source-data-type が、ビット・データ用かどうかを示します。 データ・ソース・タイプの列にバイナリー値が含まれる場合、これらのキーワードは必須です。 この属性が文字データ・タイプで指定されていない場合、 データベース・マネージャーがこの属性を決定します。

  • 所定の作業単位 (UOW) 内の CREATE TYPE MAPPING ステートメントは、 以下のいずれかの条件の下では処理できません (SQLSTATE 55007)。
    • ステートメントが 1 つのデータ・ソースを参照していて、 次のいずれかが既に UOW に含まれている。
      • このデータ・ソース内の表またはビューのニックネームを参照する SELECT ステートメント。
      • このデータ・ソース内の表またはビューのニックネーム上のオープン・カーソル。
      • このデータ・ソース内の表またはビューのニックネームに対して発行された INSERT、DELETE、または UPDATE ステートメント。
    • ステートメントがデータ・ソースのカテゴリー (例えば、 特定のタイプおよびバージョンのすべてのデータ・ソースなど) を参照しており、 次のいずれかが既に UOW に含まれている。
      • それらのデータ・ソースのいずれかの中の表またはビューのニックネームを参照する SELECT ステートメント。
      • それらのデータ・ソースのいずれかの中の表またはビューのニックネーム上のオープン・カーソル。
      • それらのデータ・ソースのいずれかの中の表またはビューのニックネームに対して 発行された INSERT、DELETE、または UPDATE ステートメント。
  • 複数のタイプ・マッピングが適用できる場合は、 最新のマッピングが使用されます。 SYSCAT.TYPEMAPPINGS カタログ・ビューの CREATE_TIME 列を照会することにより、 タイプ・マッピングの作成時間を検索できます。
  • フェデレーテッド・システムでは、BINARY と VARBINARY のタイプはサポートされていません。

  1. Oracle データ・タイプ DATE とデータ・タイプ SYSIBM.DATE との間のフォワード・タイプ・マッピングを作成します。 このマッピングが定義された後に作成されるすべてのニックネームについて、 データ・タイプ DATE の Oracle 列はデータ・タイプ DATE の Db2 列にマップします。
       CREATE TYPE MAPPING MY_ORACLE_DATE
         FROM LOCAL TYPE SYSIBM.DATE
         TO SERVER TYPE ORACLE
         REMOTE TYPE DATE
  2. データ・タイプ SYSIBM.DECIMAL(10,2) とデータ・ソース ORACLE1 の Oracle データ・タイプ NUMBER([10..38],2) との間のフォワード・タイプ・マッピングを作成します。 データ・タイプ NUMBER(11,2) の Oracle 表にある列は、 11 が 10 と 38 の間に位置するので、 データ・タイプ DECIMAL(10,2) の列にマップされます。
       CREATE TYPE MAPPING MY_ORACLE_DEC
         FROM LOCAL TYPE SYSIBM.DECIMAL(10,2)
         TO SERVER ORACLE1
         REMOTE TYPE NUMBER([10..38],2)
  3. データ・タイプ SYSIBM.VARCHAR(p) と データ・ソース ORACLE1 の Oracle データ・タイプ CHAR(p) との間の フォワード・タイプ・マッピングを作成します (p は任意の長さ) 。 データ・タイプ CHAR(10) の Oracle 表にある列は、 データ・タイプ VARCHAR(10) の列にマップされます。
       CREATE TYPE MAPPING MY_ORACLE_CHAR
         FROM LOCAL TYPE SYSIBM.VARCHAR()
         TO SERVER ORACLE1
         REMOTE TYPE CHAR()
  4. データ・ソース ORACLE2 の Oracle データ・タイプ NUMBER(10,2) と データ・タイプ SYSIBM.DECIMAL(10,2) との間のリバース・タイプ・マッピングを作成します。 透過 DDL を使用して Oracle 表を作成し、データ・タイプ DECIMAL(10,2) の列を指定すると、データ・タイプ NUMBER(10,2) の列を持つ Oracle 表が作成されます。
       CREATE TYPE MAPPING MY_ORACLE_DEC
         TO LOCAL TYPE SYSIBM.DECIMAL(10,2)
         FROM SERVER ORACLE2
         REMOTE TYPE NUMBER(10,2)