JDBC Driver for Microsoft Dynamics 365 Business Central

Build 23.0.8839

INSERT INTO SELECT ステートメント

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

この機能は、JDBC で利用可能な標準バッチ処理 API 経由でも利用できます。詳しくは、バッチ処理 を参照してください。

一時テーブルへの入力

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

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

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

実際のテーブルへの挿入

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

INSERT INTO Accounts (Name, MyCustomField__c) SELECT Name, MyCustomField__c FROM Accounts#TEMP
この例では、Accounts#TEMP テーブルのすべての内容がAccounts テーブルに渡されます。この結果、各要求で複数のINSERT を送信できるため、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 23.0.8839