Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

SQL ビジネス・オペレーションの使用法

インターシステムズでは、別のビジネス・ホストから受信メッセージを受け取ると SQL を使用してデータをプロダクションに読み込む事前構築済みのビジネス・オペレーションを 2 つ提供しています。ビジネス・オペレーションを使用し、メッセージに応答してクエリを実行するには、EnsLib.SQL.Operation.GenericOperation をプロダクションに追加します。クエリではなく SQL プロシージャを実行する場合は、EnsLib.SQL.Operation.ProcOperation を使用します。

これらの組み込みのビジネス・オペレーションは、送信 SQL アダプタ (EnsLib.SQL.OutboundAdapterOpens in a new tab) を使用して外部データ・ソースにアクセスします。場合によっては、このアダプタとその結果の処理方法を詳細に制御するカスタム・ビジネス・オペレーションを構築しなければならないことがあります。

既定では、初めてビジネス・オペレーションのクエリで結果の複数行が返されるときに警告が生成されますが、この警告は次回は表示されません。この動作を変更するには、ビジネス・オペレーションの [Only Warn Once] 設定を無効にします。[Only Warn Once] 設定は、プロパティを設定できない場合の動作を制御するものではなく (初回に警告を生成するだけです)、受信ストリームが文字列プロパティに収まるように切り捨てられた場合の動作を制御するものであることに注意してください。

データ・ソース名の指定

ビジネス・オペレーションには、接続先のデータ・ソースを指定する設定があります。ビジネス・オペレーションを構成する場合は、この設定に適切な値を設定する必要があります。

DSN

このデータ・ソース名は、接続先である外部データ・ソースを指定します。InterSystems IRIS® では、定義済みの InterSystems SQL ゲートウェイ接続、JDBC URL、およびオペレーティング・システムで構成した ODBC DSN の 3 種類の形式を自動的に区別します。

管理ポータルの [システム管理][構成する][接続性][SQLゲートウェイ接続] ページから構成された JDBC 接続または ODBC 接続の名前とこの名前が一致すると、その仕様のパラメータが使用されます。エントリが構成済みの接続名ではなく、そこにコロン (:) が使用されていると、その名前は JDBC URL と見なされます。それ以外の場合は ODBC DSN と見なされます。

このデータ・ソースがパスワードによって保護されている場合は、ユーザ名とパスワードを含むプロダクション認証情報を作成します。その後、これらの認証情報の ID と一致するように Credentials を設定します。詳細は、"その他の実行時設定の指定" を参照してください。

JDBC データ・ソースを使用している場合は、以下の設定も適用されます。

JGService

このオペレーションで使用する Java ゲートウェイ・サーバを制御する Java ゲートウェイ・サービスの構成名です。

Important:

この設定は、JDBC と接続中の SQL ゲートウェイ接続を使用している場合でも、すべての JDBC データ・ソースで必要です。JDBC 接続が機能するには、タイプが EnsLib.JavaGateway.ServiceOpens in a new tab のビジネス・サービスが存在する必要があります。SQL アダプタに対して、この構成項目の名前を指定する必要があります。その構成済み設定を使用して、このアダプタが管理する JVM に接続します。

JDBCDriver

JDBC ドライバ・クラス名です。

名前付き SQL ゲートウェイ接続を DSN として使用する場合、この値の指定は任意です。ただし、値を指定すると、名前付き JDBC SQL ゲートウェイ接続のプロパティよりも優先して適用されます。

JDBCClasspath

JDBC ドライバ・クラス名のクラスパスです (Java ゲートウェイ・サービスで構成したクラスパス以外にも必要な場合)。

ConnectionAttributes

必要に応じて設定できる一連の SQL 接続属性オプション。ODBC の場合は、これらの形式は次のとおりです。

attr:val,attr:val

例 : AutoCommit:1

JDBC の場合は、これらの形式は次のとおりです。

attr=val;attr=val

例 : TransactionIsolationLevel=TRANSACTION_READ_COMMITTED

名前付き JDBC SQL ゲートウェイ接続を DSN として使用する場合、この値の指定は任意です。ただし、値を指定すると、名前付き JDBC SQL ゲートウェイ接続のプロパティよりも優先して適用されます。

クエリの指定

ビジネス・オペレーションの [クエリ] 設定の値は、ビジネス・オペレーションがプロダクション内の別のビジネス・ホストから受信メッセージを受け取ったときに実行される SQL 文字列 (SELECTINSERT INTO など) です。この文字列には、置き換え可能なパラメータを表す SQL 標準の ? を使用できます。

[入力パラメータ] 設定は、[クエリ] 設定で指定されたパラメータとして渡す値を指定するコンマ区切り文字列です。受信メッセージのプロパティとして受け取った値を渡すこともできます。パラメータをメッセージ・プロパティの値に置き換えるには、プロパティの名前を、先頭に * の文字を付けて指定します。この構文は、指定したプロパティが、記述されているダイナミック・オブジェクトのプロパティである限り、受信メッセージが Ens.StringContainer または Ens.StreamContainer 内の JSON 文字列であっても使用できます。

その他の実行時設定の指定

SQL ビジネス・オペレーションには、次のような追加の実行時設定があります。

Credentials

指定された DSN への接続を承認できるプロダクション認証情報の ID を識別します。プロダクション認証情報の作成方法は、"プロダクションの構成" を参照してください。

StayConnected

SQL 文の送信や ODBC ドライバ設定の変更などのコマンドを実行している間、接続を開いたままにするかどうかを指定します。

  • この設定が 0 の場合は、コマンドを 1 つ実行終了するたびに SQL 送信アダプタの接続が直ちに切断されます。

  • この値が正の場合、その値はコマンド完了後のアイドル時間 (秒) になります。アダプタは、このアイドル・タイムの経過後に接続を切断します。

  • この設定が -1 の場合、アダプタは起動時に自動接続し、接続したままになります。

このドキュメントの "トランザクションの管理" の説明にあるようにデータベース・トランザクションを管理している場合は、StayConnected を 0 に設定しないでください。

ここに記載されていない設定については、"プロダクションの構成" を参照してください。

SQL プロシージャ設定

ビジネス・オペレーションでストアド・プロシージャを呼び出す方法を制御する設定の詳細は、"プロシージャの詳細" を参照してください。

応答メッセージについて

ビジネス・サービスで使用されるメッセージと同様に、ビジネス・オペレーションで取得されたデータを受け取るためにカスタム・メッセージ・クラスを開発する必要はありません。既定では、ダイナミック・オブジェクトを使用して、ビジネス・オペレーションを呼び出したビジネス・ホストにデータが返されます。このダイナミック・オブジェクトには、クエリの各列に対応するプロパティがあり、オブジェクトを記述する JSON 文字列は Ens.StreamContainer のストリーム値として挿入されます。ビジネス・オペレーションのクエリが結果の複数行を返す場合は、すべての行がこの JSON 文字列に格納されます。

ダイナミック・オブジェクトではなくカスタム応答メッセージを使用したい場合は、ビジネス・オペレーションの [レスポンス・クラス] 設定を使用してカスタム・メッセージ・クラスを指定します。このカスタム・クラスのプロパティは SQL クエリの列と一致する必要がありますが、SQL As キーワードを使用してこの要件を回避できます。列の値は、メッセージの対応するプロパティに配置されます。SELECT クエリが複数の行を返す場合、メッセージには最初の行の値だけが含まれます。

カスタム・メッセージ・クラスを使用するかどうかにかかわらず、ビジネス・オペレーションで UPDATE、INSERT、または DELETE のクエリを実行する場合、応答メッセージには 1 つのプロパティ NumRowsAffected だけが含まれます。

データ型と応答メッセージの詳細は、"メッセージの詳細" を参照してください。

FeedbackOpens in a new tab