記述量を減らし変化に対応しやすくする

プロシージャで記述する時、GeneXusの特性を知っているとコード量も減り、変化にも対応し易くなる事があります。

例えば、あるテーブルから特定のレコードを抽出し、その値を元に新たなレコードを追加したい場合、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の特性を理解してより作業量の少ない、変化にも強いコーディングに取り組んでみて下さい。



コメント

このブログの人気の投稿

データプロバイダーを使いこなそう - 応用編その4 スケジューラー 補足編

HTMLヘッダーにあれこれ直接追加したいとき

GeneXusにおけるWebアプリケーションセキュリティ対策 - OWASP 2010 Top10 Security Risks in GeneXus Applications