現在地: LANSA テクニカル リファレンスガイド > 9. 組み込み関数 > 9.38 DEFINE_OVERRIDE_FILE

9.38 DEFINE_OVERRIDE_FILE

この組み込み関数を使って、データベース・テーブルのオーナー名やデータベース・テーブル名を上書きできます。

通常、この組み込み関数は、アプリケーションのインストール時に、ファイル (テーブル) に関連付けられたライブラリ (スキーマ名) が変更された時に使用されます。この場合、テーブルはインストール・スキーマ名でデータベース内に作成されますが、提供の OAM は、OAM 生成時の LANSA ライブラリに埋め込まれます。アプリケーション実行時にこのファイルにアクセスするには、アプリケーションで DEFINE_FILE_OVERRIDE を使って、OAM を現在のインストールに適切な LANSA ライブラリにリダイレクトする必要があります。詳細は「上書きが必要となる理由」および「SuperServerやLANSA Open.Netを利用したDefine_Override_Fileの使用」を参照してください。

このデータベースの上書きが有効なのは現セッション終了までです。

DEFINE_OVERRIDE_FILEの機能はSELECT_SQLの自由形式のコマンドには利用できません。

 

引数

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

任意

ファイル・ライブラリ名

ファイル・ライブラリ名が指定されない場合、定義された上書き全てを削除します。

1

10

 

 

2

A

任意

ファイル名

1

10

 

 

3

A

任意

データベース・テーブルのオーナー名を上書きします。

上書きするデータベース・テーブルのオーナーやテーブル名が指定されない場合、前回定義された上書きを削除します。

1

128

 

 

4

A

任意

データベース・テーブル名を上書きします。

上書きするデータベース・テーブルのオーナーやテーブル名が指定されない場合、前回定義された上書きを削除します。

1

128

 

 

 

 

戻り値

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

必須

戻りコード:OK

2

2

 

 

 

 

上書きが必要となる理由

アプリケーションがインストールされる時は、OAM 生成時の LANSA ライブラリに埋め込まれた、1 つの OAM しかインストールされません。アプリケーション・ファイルが OAM に埋め込まれたライブラリと異なるライブラリにインストールされた場合、OAM はランタイム時に適切な LANSA ライブラリにリダイレクトされなければいけません。LANSAライブラリはデータベースに相当するものにマップされ、これには異なるデータベース・マネージャで別の名前が付けられています。様々な呼び名がありますが、これがスキーマ、オーナー、コレクションと言われるものです。

以下はこのプロセスの概要です。

1.ファンクション/コンポーネントが"生成"ライブラリで生成され、これが共通のデータベース実行レイヤーに渡されます。

2.OAMが検索されます。区画モジュール・ライブラリ区画ファイル・ライブラリにある場合、ライブラリは"生成"ライブラリではなくなります。"実行"ライブラリになります。

ファイルOAMは"生成"されたライブラリを指します。上書きの際は、この"生成"ライブラリをOVERRIDE_TABLE_OWNERに指定します。

3."実行"ライブラリが検索され、上書きが存在しないか確認されます。"実行"ライブラリがまだ"生成"ライブラリの場合、ファイルは新しいライブラリで上書きされます。

区画ファイル・ライブラリにインストールされたファイルを上書きする場合は、区画ファイル・ライブラリのシステム変数がフィールドに適用されている必要があり、このフィールドがOVERRIDE_TABLE_OWNERに渡され、ライブラリが実行時に上書きされます。

アプリケーションには、この区画ファイル・ライブラリにインストールされたファイルがあります。通常はこの区画ファイル・ライブラリは"生成"ライブラリと同じ名前ではありません。もし、これが同じ名前であれば、生成時の上書きで区画ファイル・ライブラリも上書きされてしまいます。ファイルは常に同じライブラリにアクセスしなければいけないので、これでは期待通りの結果を得ることはできません。

SuperServerやLANSA Open.Netを利用したDefine_Override_Fileの使用

DEFINE_OVERRIDE_FILEは実行中のRDMLのローカル・データベース上で作動します。データベースのIOが実行されると、OAMはOAMが実行されているマシンやプロセスのファイル上書きをチェックします。ですから、サーバー上でOAMを実行するには、ファイルの上書きはCALL_SERVER_FUNCTIONを使用して、DEFINE_OVERRIDE_FILEを正しく呼び出す必要があります。これは、SuperServerもLANSA Open .Netでも同じことが言えます。

上書きの設定方法

1.有効なファイル・ライブラリ名とオプションでファイル名を指定して、上書きを行うファイルを示します。

2.また上書きするデータベース・テーブルのオーナー名と上書きするデータベース・テーブル名の両方、もしくはどちらか一方も指定されなければいけません。次の表では全ての有効なケースが紹介されています。

説明

ファイル・ライブラリ名

ファイル名

データベース・テーブル・オーナー名の上書き

データベース・テーブル名の上書き

特定のファイル・ライブラリ名の全てのファイルを異なるデータベース・テーブル・オーナーに上書き

X

*Default

X

 

特定のファイルを異なるデータベース・テーブル・オーナーに上書き

X

X

X

 

特定のファイルを異なるデータベース・テーブル・オーナーで異なるデータベースに上書き

X

X

*Default

X

特定のファイルを異なるデータベース・テーブルに上書き

X

X

X

X

 

 

上書きグループの上書きを削除する方法

1.DEFINE_OVERRIDE_FILEを引数なしに実行し、データベース・ファイルの全ての上書きを取り除きます。

2.ファイル・ライブラリ名の引数のみでDEFINE_OVERRIDE_FILEを実行し、ライブラリ内の全てのファイルの上書きを取り除きます。

3.ファイル・ライブラリ名とファイル名の引数でDEFINE_OVERRIDE_FILEを実行し、特定のファイルの上書きを取り除きます。

説明

ファイル・ライブラリ名

ファイル名

データベース・テーブル・オーナー名の上書き

データベース・テーブル名の上書き

全ての定義された上書きを削除する

 

 

 

 

ファイル・ライブラリの上書きを削除する

X

 

 

 

特定のファイルの上書きを削除する

X

X

 

 

 

 

使用例

例1:特定のファイル・ライブラリ名の全てのファイルを異なるデータベース・テーブル・オーナーABCに上書きする。

Use BIF(Define_Override_File) ('DC@DEMOLIB' *Default 'ABC') To_Get(#retcode)

 

例2:特定のファイルを異なるデータベース・テーブル・オーナーABCに上書きする。

Use BIF(Define_Override_File)  ('DC@DEMOLIB' 'PSLMST' 'ABC') To_Get(#retcode)

 

例3:特定のファイルを異なるデータベース・テーブル・オーナーを使用して異なるデータベースに上書きする。

Use BIF(Define_Override_File) ('DC@DEMOLIB' 'PSLMST' *Default 'XYZ') To_Get(#retcode)

 

例4:特定のファイルを異なるデータベース・テーブルに上書きする。

Use BIF(Define_Override_File) ('DC@DEMOLIB' 'PSLMST' 'ABC' 'XYZ') To_Get(#retcode)

 

例5:全ての定義された上書きを削除する。

Use BIF(Define_Override_File) To_Get(#retcode)

 

例6:ファイル・ライブラリの上書きを削除する。

Use BIF(Define_Override_File)  ('DC@DEMOLIB') To_Get(#retcode)

 

例7:特定のファイルの上書きを削除する。

Use BIF(Define_Override_File) ('DC@DEMOLIB' 'PSLMST') To_Get(#retcode)