Edited at

[OutSystems]SQL Widgetの使い方


初めに

OutSystemsでは通常、AggregateやEntity Actionを使ってデータベースからデータを読み込んだり書き出したりします。





しかし、AggregateやEntity Actionでは実現できないこともあります。例えば以下のようなことです。


  • 副問合せ

  • 一括Insert, Update, Delete(Entity Actionでは1件ずつInsert, Update, Deleteすることになり大量データ処理には向かない)

やっぱLow-Code Platformじゃできないこともあるよね・・・と諦めてなくても大丈夫です!こういった場合のためにOutSystemsにはSQLというWidgetが用意されています。ただ、使う機会が限られているが故にあまり情報もありませんので、ここで整理したいと思います。


想定読者


  • OutSystemsを使う開発者


対象とすること


  • OutSystemsのSQL Widgetの使い方


対象としないこと


  • 通常のSQLの書き方


前提

以下のようなEntityを作成し適当にデータ登録しました。


SELECTの書き方

では、早速Actionの中にSQL Widgetを配置しStatementを編集していきます。


ポイント


  • Entityは{}で、Attributeは[]で囲みます。また、{Data}.[Id]などと書くことにより、Attribute IdのFind Usagesでヒットするようになります。[Id]とだけ書いても動くのですが、{Data}.[Id]と書くようにしましょう

  • バインド変数を利用する場合はParametersにQuery Parameterを追加します

  • Output Entities / Structuresに取得結果を格納する変数の型を設定しましょう

  • 通常のSQL同様セミコロンも書きましょう(書かなくても動くのですが、書く理由は後述)

  • Test Inputsを入力しTestボタンを押すとSQLのテストができますので、ここでエラーが発生しないことを確認しておきましょう。また実際に発行したSQLをExecuted SQLで確認できます


UPDATE, DELETEの書き方

次はUPDATE, DELETEです。基本的にはSELECTの場合と同じです。


ポイント


  • UPDATE, DELETEの場合であってもOutput Entities / Structuresに取得結果を格納する変数の型を設定が必要です(この変数には何も格納されないためダミーの型でOKです)

  • ここでTESTをしても実際のデータは更新されないため、心配せずにテストしましょう

  • そして実は1つのSQL Widgetには複数のSQLを記述できます。そのためにも普段からセミコロンを付けておきましょう。例えば1つのSQL Widgetで関連するデータをまとめて削除するといった使い方はありえます -> バージョンによってはエラーになるようです。OutSystems11では動きましたが、OutSystems10ではエラーになってしまいました


参考

独自のSQLクエリを書く - OutSystems




独自のSQLクエリを書く - OutSystems...



Development FAQs - OutSystems




Development FAQs - OutSystems...