XML 要求で SP を呼び出す必要があります。これはウィザードによって、次のような要素を持つ XML ドキュメントとして自動生成されます。
<xs:element name="sp_storedProcedureName">
<xs:complexType>
<xs:attribute name="Field1" type="xs:string"/>
<xs:attribute name="Field2" type="xs:string"/>
. . .
一部の SP パラメータが null である可能性があります。null 属性は「属性なし」を意味するため、属性はこのシナリオに適合しません。したがって、スキーマの検証は失敗します。
この方法でリクエスト スキーマを手動で再作成しました。
<xs:element name="sp_storedProcedureName">
<xs:complexType>
<xs:sequence>
<xs:element name="Field1" type="xs:string"/>
<xs:element name="Field2" type="xs:string"/>
<xs:element name="FieldN" type="xs:string" nillable="true"/>
. . .
作成されたメッセージは有効であるように見えます (LINT はそう言っているので、マップ テストは失敗します)。つまり、値は次のとおりです。
<ns0:sp_storedProcedureName>
<ns0:Field1>AB012345</ns0:Field1>
<ns0:Field2>ZZ</ns0:Field2>
<ns0:FieldN xsi:nil="true" />
. . .
これはまさに私が必要とするものです。メッセージが送信ポート パイプラインに到達すると、送信は次のエラーで失敗します。
HRESULT="0x80040e10"
Description="Procedure or function 'sp_storedProcedureName' expects parameter '@Field1', which was not supplied."
それでも、値がxmlによって提供されることは明らかですが、SQLアダプターは要素から読み取ることはできませんが、メイン要素の属性から読み取ることはできます。
そうですか?
私の主な質問は、 xml を使用してストアド プロシージャに null 値を渡すにはどうすればよいですか?