JDBC Driver for Microsoft Dynamics 365 Business Central

Build 24.0.9062

UPDATE SELECT ステートメント

Microsoft Dynamics 365 Business Central への1回の要求で複数の更新処理を実行するには、まずINSERT INTO 構文を使用して、データの一時テーブルをMicrosoft Dynamics 365 Business Central に挿入します。このとき、Microsoft Dynamics 365 Business Central に送信されるデータは、まず一時テーブルに入力されます。更新するデータがすべて一時テーブルに入力されたら、UPDATE SELECT FROM を使用して、一時テーブルのデータをMicrosoft Dynamics 365 Business Central のテーブルに渡します。

この機能は、JDBC で利用可能な標準バッチ処理 API 経由でも利用できます。

一時テーブルへの入力

入力先の一時テーブルは動的なテーブルで、実行時に最初のデータをテーブルに入力するときに作成されます。一時テーブルは、その名前に「#」を付加して示されます。一時テーブルを使用してデータを更新する場合、その一時テーブルには「[TableName]#TEMP」という形式で名前を付ける必要があります。「TableName」は、データを挿入するテーブルの名前です。 次に例を示します。

INSERT INTO Accounts#TEMP (AccountId, Name, MyCustomField__c) VALUES ('AX1000001', 'New Accounts', '9000');
INSERT INTO Accounts#TEMP (AccountId, Name, MyCustomField__c) VALUES ('AX1000002', 'New Accounts 2', '9001');
INSERT INTO Accounts#TEMP (AccountId, Name, MyCustomField__c) VALUES ('AX1000003', 'New Accounts 3', '9002');

このコードでは、3つのデータカラムと3つのデータ行を含む「Accounts#TEMP」という名前の一時テーブルが作成されます。一時テーブルでは型を指定できないため、すべての値が文字列としてメモリに保存されます。値は、Accounts テーブルに送信された後で正しい型に変換されます。

実際のテーブルの更新

一時テーブルにデータが入力されたら、Microsoft Dynamics 365 Business Central の実際のテーブルに対して更新を実行します。そのためには、実際のテーブルへの更新(UPDATE)を実行し、一時テーブルから入力データを選択します。次に例を示します。

UPDATE Accounts (AccountId, Name, MyCustomField__c) SELECT AccountId, Name, MyCustomField__c FROM Accounts#TEMP
この例では、Accounts#TEMP テーブルのすべての内容がAccounts テーブルに渡されます。この結果、各要求で複数の更新を送信できるため、Microsoft Dynamics 365 Business Central に送信される要求の数が少なくて済み、多くのレコードを更新する場合のパフォーマンスが向上します。

結果

クエリの結果は、一時テーブルLastResultInfo#TEMP に保存されます。次に一時テーブルが渡されてデータが変更されると、このテーブルはクリアされて、データが再挿入されます。LastResultInfo#TEMP テーブルはスキーマが事前定義されていないことに注意してください。データを読み取る前に、実行時にそのメタデータを確認する必要があります。

一時テーブルの存続時間

一時テーブルは、接続が開いている間だけ存続します。Microsoft Dynamics 365 Business Central への接続が閉じられると、LastResultInfo#TEMP テーブルを含むすべての一時テーブルがクリアされます。

Copyright (c) 2024 CData Software, Inc. - All rights reserved.
Build 24.0.9062