Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

<sql>

埋め込まれた SQL SELECT 文を実行します。

Synopsis

<sql name="LookUp">        SELECT SSN INTO :context.SSN     FROM MyApp.PatientTable    WHERE PatID = :request.PatID    </sql>

詳細

属性または要素 説明
namedisabledxposyposxendyend 属性 一般的な属性と要素” を参照してください。
<annotation> 要素

説明

<sql> 要素は、ビジネス・プロセスの実行中に、任意の埋め込み SQL SELECT 文を実行します。

<sql> 要素は、テーブルを使用した検索操作の実行に特に有効です。例えば、ビジネス・プロセスに送信された基本要求に、患者 ID 番号を示す PatId プロパティがあり、ビジネス・プロセスが作業を実行する前に、患者 ID 番号と一致する社会保障番号 (SSN) を検索する必要があるとします。PatIdSSN に関連付ける PatientTable テーブルが使用可能であれば、以下のように <sql> 要素を使用して、この検索を実行できます。

<process>
  <sql name="LookUp">
    SELECT SSN INTO :context.SSN
    FROM MyApp.PatientTable
    WHERE PatID = :request.PatID
    
  </sql>
</process>

上記の例では、実行コンテキスト変数 context に、SQL のクエリ結果を取得できる SSN プロパティがあります。実行コンテキスト変数 request には、PatId プロパティが自動的に追加されます。この変数には、基本要求オブジェクトで取得したプロパティが必ず格納されるためです。

Note:

ビジネス・プロセス実行コンテキストの詳細は、このドキュメントの <assign> 要素と、"BPL プロセスの開発" を参照してください。

Ensemble データベース内に PatientTable のローカル・コピーを保持している場合、上記の例は、コストの高いネットワーク操作や追加のミドルウェアをまったく使用せずに実行できるため、特に効率的です。

<sql> 要素を効率的に使用するため、以下のヒントを参考にしてください。

  • 常に、SQL スキーマ名とテーブル名の両方で構成された以下のような完全なテーブル名を使用します。

    MyApp.PatientTable

    上記の例の MyApp は SQL スキーマ名、PatientTable はテーブル名です。

  • <sql> 要素の内容には、有効な埋め込み SQL SELECT 文が含まれている必要があります。

    SQL クエリを CDATA ブロック内に配置すれば、特殊な XML 文字のエスケープに影響されることはありません。

  • SQL クエリの FROM 節にリストされるテーブルは、ローカルの Ensemble データベースに格納されているか、SQL ゲートウェイを使用して外部リレーショナル・データベースにリンクされている必要があります。

  • SQL クエリの INTO 節および WHERE 節内では、ビジネス・プロセスの実行コンテキスト内の 1 つの変数名の前に、“:” を付けることにより、そのプロパティを参照できます。以下に例を示します。

    <sql name="LookUp">
      SELECT Name INTO :response.Name
      FROM MainFrame.EmployeeRecord
      WHERE SSN = :request.SSN AND City = :request.Home.City
    
    </sql>
  • 使用されるのは、クエリで返された最初の行のみです。WHERE 節では、必要な行を正確に指定してください。

FeedbackOpens in a new tab