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

プロシージャの詳細

ビジネス・サービスとビジネス・オペレーションは、どちらもストアド・プロシージャを使用して外部データ・ソースからデータを取得できます。このアプローチは、サービスまたはオペレーションのどちらを使用しているかにかかわらず同様です。 EnsLib.SQL.Service.ProcService または EnsLib.SQL.Operation.ProcOperation をプロダクションに追加した後、[プロシージャ] 設定を使用し、プロシージャの名前を、各パラメータに対応する ? を含めて指定します。例えば、「Sample.Stored_Procedure_Test(?,?)」と入力できます。

クエリと異なり、ストアド・プロシージャでの呼び出しでは戻り値を持つことができます。入力パラメータを参照渡しすることができ、出力パラメータを存在させることが可能で、プロシージャ全体で 1 つの値を返すことができます。このような戻り値を処理し、入力値と出力値を区別するために、ビジネス・サービスまたはビジネス・オペレーションでは 3 つの設定を使用します。[パラメータ] (ビジネス・サービス) または [入力パラメータ] (ビジネス・オペレーション) には、プロシージャに渡される値が格納されます。[Output Parameter Names] には、パラメータで返される値に設定されたプロパティ名が格納されます。[入力/出力] では、プロシージャ呼び出しのパラメータが入力パラメータであるか、出力パラメータであるか、またはその両方であるかを識別します。

ビジネス・ホストがパラメータと戻り値をどのように処理するかを理解するには、[入力/出力] 設定が重要です。ビジネス・ホストは、パラメータのタイプを識別する 3 つの文字を受け入れます。"i" (入力)、"o" (出力)、および "b" (両方/ByRef) です。[入力/出力] 設定内のこれらの文字の順序は、プロシージャ呼び出しのパラメータの順序に対応します。例えば、プロシージャ呼び出しが Sample.Stored_Procedure_Test(?,?,?)[入力/出力] の値が ioo である場合、プロシージャ呼び出しの最初のパラメータは [パラメータ] 設定の値を受け入れ、2 番目と 3 番目のパラメータはプロシージャによって返される値になります。これらのパラメータの戻り値は、[Output Parameter Names] 設定で指定した名前に割り当てられます。

プロシージャ全体で 1 つの値を返す場合は、[入力/出力] の最初の文字を o にする必要があります。すると、[Output Parameter Names] 設定の最初の名前に戻り値が割り当てられます。

この仕組みの詳しい例として、ビジネス・オペレーションが以下のような設定になっている場合を考えてみましょう。

設定
プロシージャ Sample.Stored_Procedure_Test(?,?,?,?)
入力パラメータ *Value,x
Output Parameter Names ReturnValue,Response,Stream,TruncatedStream
入力/出力 oiboo

[入力/出力] の値がプロシージャ内の疑問符の数より多くなっている点に注意してください。これは戻り値も存在するからです。その戻り値は、[Output Parameter Names] の最初の文字列に対応しています。[入力/出力] の 2 番目の値は i です。これは、プロシージャの最初の値 (最初の ?) が入力パラメータであるからです。 この場合、この値は受信メッセージの Value プロパティから取得します。2 番目のパラメータは入力と出力の両方です。つまり、ByRef で渡されます。値 x が送信されますが、これは [Output Parameter Names] の 2 番目の文字列にも対応しているため、応答メッセージの Response プロパティは、このパラメータで返される値に設定されます。他の 2 つのパラメータは完全に出力パラメータであるため、これらには何も渡されず、戻り値は応答メッセージの Stream プロパティと TruncatedStream プロパティに割り当てられます。

FeedbackOpens in a new tab