LoginSignup
5
5

More than 5 years have passed since last update.

[OutSystems]SQL Widgetの使い方

Last updated at Posted at 2019-01-20

初めに

OutSystemsでは通常、AggregateやEntity Actionを使ってデータベースからデータを読み込んだり書き出したりします。
image.png
image.png
しかし、AggregateやEntity Actionでは実現できないこともあります。例えば以下のようなことです。

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

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

想定読者

  • OutSystemsを使う開発者

対象とすること

  • OutSystemsのSQL Widgetの使い方

対象としないこと

  • 通常のSQLの書き方

前提

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

SELECTの書き方

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

ポイント

  • 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の場合と同じです。
image.png

ポイント

  • 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...
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5