初めに
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の書き方
前提
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... |
|