例えば、あるテーブルから特定のレコードを抽出し、その値を元に新たなレコードを追加したい場合、SQLではSELECTとINSERTを組み合わせます。
INSERT INTO TABLE_A (COLMUN1,COLMUN2,COLMUN3,COLMUN4....)
SELECT 'KeyValue',COLMUN2,COLMUN3,’NewValue'....
FROM TABLE_A WHERE COLMUNn = 'xxxxx';
これをGeneXusで実現する場合は
For each
Where COLMUNn = 'xxxxx'
New
COLMUN1 = 'KeyValue'
COLMUN4 = 'NewValue'
EndNew
Endfor
となります。COLUMN2やCOLUMN3がありませんね。これはGeneXusがテーブル上の項目を推測し、指定されていない場合は自動的に含めてくれるので記述する必要がありません。つまり変更したい項目のみ代入式を記述すればよいのです。
NewコマンドではCustomerNameとCountryIdの指定のみです。 この例では主キーであるCustomerIdはオートナンバー(自動採番)です。 |
ナビゲーションレポートを見ると、オプティマイザーが働いてsub selectによるinsetを推論しています。 又、インサートに必要な項目が全て抽出されています。 |
これにより以下のようなメリットが享受できます。
- 記述するコード量が減る(項目数が多いほど有利)
- テーブルの構造変化に対して修正量が減る
GeneXusの特性を理解してより作業量の少ない、変化にも強いコーディングに取り組んでみて下さい。
0 件のコメント:
コメントを投稿