MTblSet

 

BLOBの内容をメモリテーブル化

(MTblGetで作成された)BLOB項目の内容をメモリテーブルに展開します。

構文:

MTblSet(BLOB項目、テーブル番号、DB テーブル名、 モード)

パラメータ:

  • BLOB項目 …… メモリテーブルの内容を含んだBLOB項目

  • テーブル番号 …… [データ]リポジトリでのメモリテーブルの番号

  • DBテーブル名 …… (指定された場合)同じテーブル構成の異なる内容を参照します。

  • モード  …… メモリテーブルを更新する場合のモードを指定します。以下のモードがあります。

  • 0  …… 重複レコードがある場合、アボートします。BLOBデータから新規レコードを追加しますが、重複レコードが見つかった場合、処理が中断され全ての追加レコードは破棄されます。

  • 1 ……  重複レコードがある場合、スキップします。BLOBデータから新規レコードを追加し、重複レコードが見つかった場合、次のレコードの処理に移ります。

  • 2 ……  重複レコードがある場合、上書きします。BLOBデータから新規レコードを追加し、重複レコードが見つかった場合、最新のデータで更新します。

  • 3 ……  既存のテーブルを初期化します。既存のテーブルの内容が削除され新しく作り直されます。

上記以外の値が指定された場合は、「0」と見なされます。

戻り値:

数値 …… 正常に終了した場合は 0 が返ります。それ以外の場合、以下のような負数が返ります。

  • -1 …… 重複インデックスが発生した(モードが「0」の場合)

  • -2 …… メモリテーブル構造が BLOBパラメータによって供給されたテーブル構造と合っていない。

  • -3 …… 指定したテーブルがメモリテーブルではない

  • -4 …… メモリテーブルが他の理由で更新できなかった

  • -5 …… 既存のテーブルが削除できなかった(モードが「3」の場合)

利用目的:

MTblGet関数と組み合わせて利用してメモリテーブルの内容を永続的に維持することで、メモリテーブルの内容を保存し、必要に応じて変換することができるようになります。

注意事項:

  • 関数の実行中に発生した全ての DB エラーは、テーブル内容の終りまでスキップされます。

  • 現在のタスクのトランザクション設定に関係なく、ネストトランザクションとして、メモリテーブルが更新実行されます。 これは、関数が終了した時、全ての追加レコードがコミットされることを意味します。

  • この関数は、メモリテーブル構造と BLOB の内容の構造の整合性を確認します。テーブル構造は、カラムの順番、数、型のみ比較され、インデックスや外部キーはチェックされません。

  • DBテーブル名パラメータ(これによって別のテーブルを参照することが可能です。) で指定されたテーブルが、実行中のタスクでオープンされている場合は処理できません。