Skip to main content

 

 

 

 

Template:OutSystems/Documentation_KB/Breadcrumb_New_Layout

 

 

Template:OutSystems/OSLanguageSwitcher

 

 

 

OutSystems

SQLクエリ

SQLSQL要素を使用すると、アプリケーションのカスタムSQLクエリを実行、テストおよびレビューすることができます。要素は柔軟なデータ操作を提供しますが、該当する場合はAggregateを使用することをお勧めします。Aggregateは、高度に最適化され保守も容易です。

SQLクエリは、入力パラメータのみを介して送信されるデータにアクセスできます。その他のロジックは、SQLが返したデータのみに出力ストラクチャを介してアクセスできます。

入力パラメータ
入力パラメータを提供することにより、SQLクエリに動的データを使用できます。入力パラメータは必須ではありません。SQL文で入力パラメータを参照するには、@のプレフィックスを使用します(@CustomInputParameterなど)。
出力パラメータ

OutSystemsのSQLクエリには、実行されたクエリが結果を返さない場合でも常に2つの出力パラメータがあります。

  • List: クエリが返した結果のリスト。結果が何もない場合、リストは空です。
  • Count: クエリが返したレコードの数(SQL Max Recordsプロパティは考慮されません)。

出力ストラクチャは必須です。クエリが返す構造(列のデータ型)を定義する必要があります。たとえば、Employeeエンティティに対してIdNameEmailPhoneNumberの各アトリビュートを抽出するクエリを実行する場合、同じ順序で同じアトリビュートを持ち、データ型が一致する出力ストラクチャを指定します。これにより、SQLクエリのList出力パラメータがEmployee Listデータ型を返すようになります。出力ストラクチャは、SQ文が結果を返さない場合でも必要です。

SQLクエリでエンティティを参照するには波括弧の間に記述し(例: {User})、エンティティアトリビュートを参照するには角括弧の間に記述します(例: [PhoneNumber])。

独自のSQLクエリを作成する

以下の手順を実行します。

  1. SQL要素をアクションフローに追加します。
  2. 必要に応じて、クエリパラメータを定義します。
  3. SQLクエリを作成します。
  4. SQLノードの出力に使用する出力ストラクチャを定義します。
  5. SQLノードの出力リストを使用して、SQLクエリの結果にアクセスします。

注記およびガイドライン

SQL要素を使用する場合には以下の点を考慮します。

データ定義言語を避ける
SQLツールの使用は、次の操作を実行する場合に限定する必要があります。SELECTINSERTUPDATEおよびDELETE文CREATE TABLEALTER TABLEDROP TABLE等のDDL(データ定義言語)を使用すると、OutSystemsメタモデルの一貫性が損なわれ、誤動作を招く可能性があります。
物理層のクエリを使わない
OutSystemsメタモデルの一貫性を常に保証するため、メタモデルの物理テーブルに直接クエリを実行することはできません。プレフィックスOSLOGOSSYSまたはOSUSRを持つテーブルをクエリで使用すると、プラットフォームはエラーメッセージを表示します。
例外によってトリガーされるロールバック
OutSystemsは、Webリクエストがサーバーに届いたらトランザクションを開始し、ユーザーに応答を返す前にトランザクションをコミットします。例外が捕捉されずに残った場合、データの一貫性を常に保証するため、トランザクションはロールバックされます。これは、クエリがトランザクションの内部で処理され、失敗した場合は変更がロールバックされることを意味します。
ランタイムユーザーの権限の確認
クエリは、Configurationツールで指定されたランタイムユーザーを使用して、データベースでテスト・実行されます。このユーザーが、クエリで指定されたSQL文を実行する権限を持っていることを確認する必要があります。権限がない場合、実行時にそのクエリを実行したり、テストしたりするとエラーが発生します。
データベースサポートの確認
Database ModuleプロパティがAllに設定されていると、OutSystemsは、サポートされているすべてのデータベースにクエリが適合していることを確認します。適合していない場合は、警告メッセージが表示されます。
クエリパラメータのExpand Inlineプロパティを有効にしない
パラメータのExpand Inlineプロパティを有効化すると、SQL文内で使用する前にユーザー入力が適切にエスケープされていることを確認する必要があるため、適切に使用することが困難です。できる限り、このプロパティを完全に有効化することは避けてください。
OutSystemsでは、このプロパティを有効化せずに一般的なユースケースを実装する方法があります。「動的SQL文の適切な作成」をご覧ください。
  • Was this article helpful?