SAP の EXEC ステートメントの構文
次のセクションでは、.NET Framework Data Provider for mySAP Business Suite に対して EXEC ステートメントを実装するための文法仕様について説明します。 場合によっては、構文が Transact-SQL 構文と多少異なることがあります。
EXEC rfc_name {<argument_element>} [ , …n ] {;}[0,1] [ OPTION <disabledatavalidation>, <firstresultset> ]
各値の説明:
rfc_name は、実行する関数呼び出しの名前を指定します。
<>argument_element ::= @param_name = [0,1] <const> {[ INPUT |OUTPUT ]}[0,1]
param_name は、関数インターフェイスで定義されているパラメーター名を指定します。
<const> ::= integer | real | string | ? |NULL |xml_element
OPTION には、データを表示する方法に関するオプションが用意されています。 使用可能なオプションは次のとおりです。
disabledatavalidation オプションは、基になる SAP アダプターの EnableSafeTyping バインド プロパティを設定します。 安全な入力が有効になっている場合、DATS、TIMS、NUMC データ型は文字列として表されます。 このバインド プロパティの詳細については、「 BizTalk Adapter for mySAP Business Suite のバインド プロパティ」を参照してください。
firstresultset は、DATA Provider for SAP によって返される最初の結果セットを指定します。 ADO プロバイダー ソースでステートメントが実行されると、返される最初の結果セットのみが使用できます。 RFC EXEC のシナリオでは、通常、複数のテーブル パラメーターが返されますが、最初の結果セットのみがクライアント プログラムで使用できる場合は使用できない可能性があります。 OPTION 句の一部として "firstresultset" キーワード (keyword)を指定することで、クライアントはプロバイダーが返す最初のテーブル パラメーターを指定できます。 次に例を示します。
EXEC Z_TEST_ALL_TYPES @P_IN='TestInput' OPTION 'disabledatavalidation', firstresultset TAB_ALLTYPES'
この例では、EXEC ステートメントは、返される最初のテーブル パラメーターをTAB_ALLTYPESすることを指定します。
重要
OPTION キーワード (keyword)の値は、常に単一引用符 ("disabledatavalidation" など) 内で指定する必要があります。
前の構文では、xml_elementを使用して複合型の入力を提供できます。 xml 要素の構造は、構造体とテーブルで異なります。 構造体のxml_elementは次のようになります。
<PARAM_NAME>
<FIELDNAME_1 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">value</FIELDNAME_1>
<FIELDNAME_2 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">value</FIELDNAME_2>
...
...
</ PARAM_NAME>
テーブルのxml_elementは次のようになります。
<PARAM_NAME>
<STRUCT_NAME xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<FIELDNAME_1>value</FIELDNAME_1>
<STRUCT_NAME/>
<STRUCT_NAME xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<FIELDNAME_1>value</FIELDNAME_1>
<STRUCT_NAME/>
...
...
</ PARAM_NAME>
たとえば、構造体型の XML 要素は次のようになります。
<INOUT_STRUCT>
<ACCPFIELD xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">2006</ACCPFIELD>
<CHARFIELD xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">John</CHARFIELD>
</INOUT_STRUCT>
同様に、テーブル型の XML 要素は次のようになります。
<TAB_ALLTYPES>
<ZZSTRUCTALLTYPES_RFC xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<ACCPFIELD>2006</ACCPFIELD>
<CHARFIELD>John</CHARFIELD>
</ZZSTRUCTALLTYPES_RFC>
<ZZSTRUCTALLTYPES_RFC xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
<ACCPFIELD>2007</ACCPFIELD>
<CHARFIELD>James</CHARFIELD>
</ZZSTRUCTALLTYPES_RFC>
</TAB_ALLTYPES>
ステートメントの例については、「 EXEC ステートメントの例」を参照してください。
名前付きパラメーターの処理
EXEC クエリで名前付きパラメーターを指定するためのガイドラインを次に示します。
パラメーターには、 という名前を付けて指定する必要があります (例: @param_name=value))。
Note
名前のないパラメーターはサポートされていません
既定値を使用してパラメーターが定義されている場合は、パラメーターを指定せずにプロシージャを実行できます。
EXEC クエリでは、次のプロパティを持つパラメーターの使用はサポートされていません。
入れ子になった構造体 (フィールドとして構造体を含む構造体)。
入れ子になったテーブル。
構造体を含むテーブル。
テーブルを含む構造体。
複合文字列型を持つフィールドを持つ構造体またはテーブル (例:
SSTRING
またはRAWSTRING
)。次の表に、RFC の実行時の RFC パラメーター型とパラメーターの方向の間の論理マッピングを示します。
RFC パラメーター型 Query キーワード パラメーターの方向 インポート パラメーター なし Paramdirection.Input パラメーターのエクスポート 出力 Paramdirection.Output テーブル パラメーター Output/Nothing InputOutput パラメーターの処理に関する一般的なガイドラインを次に示します。
パラメーター値は、定数として指定することも、クエリでプレースホルダーを使用して指定することもできます。
クエリでプレースホルダーを使用する場合は、オブジェクトを
SAPParameter
作成し、対応するコマンド オブジェクトに追加する必要があります。 次に、プレースホルダー名をコンストラクターに渡します。方向と値はコンテキストによって異なります。パラメーターの場合
Input
は、クエリでパラメーターの方向のキーワード (keyword)を指定しないでください。value
パラメーター オブジェクトのフィールドを設定する必要があります。または、プロバイダーが例外をスローします。 プロバイダーの既定値はdirection
であるため、パラメーター オブジェクトのフィールドを明示的にInput
設定しないでください。その他のパラメーターについては、 フォーム
@paramname=@placeholder
を使用し、クエリでOutput
明示的にキーワード (keyword)を指定します。 次に、プレースホルダーに対応する をSAPParameter
追加し、パラメーターの種類に応じてパラメーターの方向をParamDirection.Output
またはParamDirection.InputOutput
に明示的に設定する必要があります。
パラメーター名とプレースホルダー名では、大文字と小文字は区別されません。
パラメーター名の方向が異なる場合を除き、クエリでパラメーター名を繰り返すことはできません。
プレースホルダー名をクエリで繰り返すことはできません。
EXEC ステートメントを呼び出すときの考慮事項
このセクションでは、DATA Provider for SAP で EXEC ステートメントを使用する場合に留意する必要がある点の一覧を示します。
EXEC ステートメントの場合、DATA Provider for SAP はフィールド値を
TIMS
.NETSystem.DateTime
オブジェクトとして返します。Note
SELECT ステートメントの場合、DATA Provider for SAP はフィールド値を
TIMS
.NETSystem.TimeSpan
オブジェクトとして返します。 SELECT ステートメントの詳細については、「 SAP での SELECT ステートメントの構文」を参照してください。