<sql>
構文
<sql name="LookUp">
SELECT SSN INTO :context.SSN
FROM MyApp.PatientTable
WHERE PatID = :request.PatID
</sql>
詳細
属性または要素 | 説明 |
---|---|
name、disabled、xpos、ypos、xend、yend 属性 | "一般的な属性と要素" を参照してください。 |
<annotation> 要素 |
説明
<sql> 要素は、ビジネス・プロセスの実行中に、任意の埋め込み SQL SELECT 文を実行します。
<sql> 要素は、テーブルを使用した検索操作の実行に特に有効です。例えば、ビジネス・プロセスに送信された基本要求に、患者 ID 番号を示す PatId プロパティがあり、ビジネス・プロセスが作業を実行する前に、患者 ID 番号と一致する社会保障番号 (SSN) を検索する必要があるとします。PatId を SSN に関連付ける 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 プロパティが自動的に追加されます。この変数には、基本要求オブジェクトで取得したプロパティが必ず格納されるためです。
InterSystems IRIS データベース内に PatientTable のローカル・コピーを保持している場合、上記の例は、コストの高いネットワーク操作や追加のミドルウェアをまったく使用せずに実行できるため、特に効率的です。
<sql> 要素を効率的に使用するため、以下のヒントを参考にしてください。
-
常に、SQL スキーマ名とテーブル名の両方で構成された以下のような完全なテーブル名を使用します。
MyApp.PatientTable
上記の例の MyApp は SQL スキーマ名、PatientTable はテーブル名です。
-
<sql> 要素の内容には、有効な埋め込み SQL SELECT 文が含まれている必要があります。
SQL クエリを CDATA ブロック内に配置すれば、特殊な XML 文字のエスケープに影響されることはありません。
-
SQL が SQLCODE エラーを返す場合、このアクションも BPL エラー処理を使用して処理可能なエラーを返します。
-
SQL クエリの FROM 節にリストされるテーブルは、ローカルの InterSystems IRIS データベースに格納されているか、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 節では、必要な行を正確に指定してください。