SQL 解説書
CREATE FUNCTION MAPPING ステートメントは、以下の目的で使用されます。
- 連合データベース関数 (または関数テンプレート) と、
データ・ソース関数との間でマッピングを作成する。
マッピングを行うことにより、連合データベースの関数またはテンプレートを、
(1) 指定したデータ・ソースあるいは (2) 特定のデータ・ソースの範囲 (たとえば、
特定のタイプおよびバージョンのデータ・ソースすべてなど) のいずれかで、
特定の関数と関連付けることができます。
- 連合データベース関数とデータ・ソース関数との間での、
デフォルトのマッピングを使用不可にする。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込むか、
あるいは動的 SQL ステートメントの使用によって発行することができます。
このステートメントは、動的に準備可能な実行可能ステートメントです。
しかし、バインド・オプション DYNAMICRULES BIND を適用する場合、
ステートメントを動的に準備することはできません (SQLSTATE 42509)。
許可
このステートメントの許可 ID には、SYSADM 権限または DBADM 権限がなければなりません。
構文
>>-CREATE FUNCTION MAPPING--+-----------------------+---FOR----->
'-function-mapping-name-'
.-,----------------.
V |
>-----+-function-name--(-----+------------+--+---)--+----------->
| '-data-type--' |
'-SPECIFIC--specific-name---------------------'
>-----+-SERVER--server-name--------------------------------------------------------------------+>
'-SERVER TYPE--server-type--+----------------------------------------------------------+-'
'-VERSION--| server-version |--+------------------------+--'
'-WRAPPER--wrapper-name--'
>-----+-----------------------+--+------------+----------------><
'-| function-options |--' '-WITH INFIX-'
server-version
|---+-version--+--------------------------+-+-------------------|
| '-.--release--+---------+--' |
| '-.--mod--' |
'-version-string-constant---------------'
function-options
.-,---------------------------------------------------.
V .-ADD--. |
|---OPTIONS--(-----+------+---function-option-name--string-constant---+---)-->
>---------------------------------------------------------------|
説明
- function-mapping-name
- 関数マッピングを指定します。
この名前は、カタログですでに記述されている関数マッピングを指定するものであってはなりません (SQLSTATE 42710)。
function-mapping-name を省略すると、システムが生成した固有の名前が割り当てられます。
- function-name
- マップ元となる関数または関数テンプレートの修飾名または非修飾名。
- data-type
- 入力パラメーターのある関数または関数テンプレートの場合、
data-type はそのようなパラメーターのデータ・タイプを指定します。
data-type は、LONG VARCHAR、LONG VARGRAPHIC、DATALINK、
ラージ・オブジェクト (LOB) タイプ、またはユーザー定義タイプにはできません。
- SPECIFIC specific-name
- マップ元の関数または関数テンプレートを指定します。
連合データベースにおいて、関数または関数テンプレートに、
固有の function-name がない場合、specific-name を指定してください。
- SERVER server-name
- マップ先の関数を含むデータ・ソースを指定します。
- TYPE server-type
- マップ先の関数を含むデータ・ソースのタイプを指定します。
- VERSION
- server-type に示されたデータ・ソースのバージョンを指定します。
- version
- バージョン番号を指定します。
version は整数でなければなりません。
- release
- version で示されたバージョンのリリース番号を指定します。
release は整数でなければなりません。
- mod
- release で示されたリリースのモディフィケーション番号を指定します。
mod は整数でなければなりません。
- version-string-constant
- バージョンの正式名称を指定します。
version-string-constant は単一値 (たとえば、'8i') にすることができます。
あるいは、version、release、
そして該当する場合は mod を連結した値にすることができます (たとえば、'8.0.3')。
- WRAPPER wrapper-name
- server-type および server-version に示されたタイプおよびバージョンの
データ・ソースと対話するために、連合サーバーが使用するラッパーの名前を指定します。
- OPTIONS
- 使用可能にする関数マッピング・オプションを指定します。
function-option-name とその設定の詳細は、
関数マッピング・オプションを参照してください。
- ADD
- 1 つ以上の関数マッピング・オプションを使用可能にします。
- function-option-name
- 関数マッピング、またはマッピングに含まれるデータ・ソース関数のいずれかに適用される、
関数マッピング・オプションを指定します。
- string-constant
- function-option-name の設定を、文字ストリング定数として指定します。
- WITH INFIX
- データ・ソース関数が infix 形式で生成されることを指定します。
注
- 連合データベースの関数または関数テンプレートは、
以下の場合に、データ・ソース関数へマッピングすることができます。
- 連合データベース関数またはテンプレートに、
データ・ソース関数と同じ番号の入力パラメーターが付けられている場合。
- 連合データベース関数またはテンプレートに定義されたデータ・タイプと、
データ・ソース関数に定義された対応するデータ・タイプとが互換性のある場合。
- 分散要求が、データ・ソース関数へマップされる DB2 関数を参照する場合、
最適化プログラムは、要求の処理時にいずれかの関数を呼び出すための戦略を開発します。
DB2 関数を呼び出すときのオーバーヘッドが、
データ・ソース関数を呼び出す場合より少なければ、この DB2 関数が呼び出されます。
しかし、DB2 関数の方がオーバーヘッドが大きいのであれば、
データ・ソース関数が呼び出されます。
- 分散要求が、データ・ソース関数へマップされる DB2 関数テンプレートを参照する場合、
要求の処理時には、データ・ソース関数だけを呼び出せます。
テンプレートには実行可能コードがないので呼び出せません。
- デフォルトの関数マッピングは、使用不可にすれば、
操作できないよう設定できます (除去することはできない)。
デフォルトの関数マッピングを使用不可にするには、
CREATE FUNCTION MAPPING ステートメントをコーディングし、
マッピング内に DB2 関数の名前を指定して DISABLE オプションを 'Y' に設定します。
- SYSIBM スキーマ内の関数には特定の名前はありません。
SYSIBM スキーマの関数のデフォルト関数マッピングをオーバーライドするには、
修飾子 SYSIBM と関数名 (LENGTH など) で構成される function-name を指定します。
- 所定の作業単位 (UOW) 内の CREATE FUNCTION MAPPING ステートメントは、
以下のいずれかの条件の下では処理できません。
- ステートメントが 1 つのデータ・ソースを参照していて、UOW にはすでに、
このデータ・ソース内の表または視点のニックネームを参照する SELECT ステートメントが含まれる場合。
- ステートメントがデータ・ソースの 1 つのカテゴリーを参照していて (たとえば、
特定のタイプおよびバージョンの全データ・ソース)、UOW にはすでに、
これらのデータ・ソースの 1 つに含まれる表または視点のニックネームを参照する SELECT ステートメントがある場合。
例
例 1: 関数テンプレートを、
すべての Oracle データ・ソースでアクセスできる UDF にマップします。
このテンプレートは STATS といい、NOVA というスキーマに属するものです。
Oracle UDF は STATISTICS といい、STAR というスキーマに属しています。
CREATE FUNCTION MAPPING MY_ORACLE_FUN1
FOR NOVA.STATS ( DOUBLE, DOUBLE )
SERVER TYPE ORACLE
OPTIONS ( REMOTE_NAME 'STAR.STATISTICS' )
例 2: BONUS という関数テンプレートを、
ORACLE1 という Oracle データ・ソースで使われている UDF (これも BONUS という) へマップします。
CREATE FUNCTION MAPPING MY_ORACLE_FUN2
FOR BONUS()
SERVER ORACLE1
OPTIONS ( REMOTE_NAME 'BONUS')
例 3: 連合データベースに対して定義されている WEEK システム関数と、
Oracle データ・ソースに対して定義されている同様の関数との間で、
デフォルトの関数マッピングが行われているとします。
Oracle データを要求し、WEEK を参照する照会が処理されると、
オーバーヘッドを少なくするために最適化プログラムで設定したところに応じて、
WEEK 関数またはその Oracle 側の関数のいずれかが呼び出されます。
DBA は、そのときの照会で WEEK だけが呼び出された場合に、
パフォーマンスがどの程度影響を受けるかを確認するようにします。
WEEK が呼び出されることを毎回確認するには、
DBA はマッピングを使用不可にしなければなりません。
CREATE FUNCTION MAPPING
FOR SYSFUN.WEEK(INT)
TYPE ORACLE
OPTIONS ( DISABLE 'Y' )
例 4: ローカル関数 UCASE(CHAR) を、
ORACLE2 という Oracle データ・ソースで使っている UDF へマップします。
Oracle UDF の呼び出しごとの見積命令数を組み込みます。
CREATE FUNCTION MAPPING MY_ORACLE_FUN4
FOR SYSFUN.UCASE(CHAR)
SERVER ORACLE2
OPTIONS
( REMOTE_NAME 'UPPERCASE',
INSTS_PER_INVOC '1000' )
[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]