0

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 値を渡すにはどうすればよいですか?

4

1 に答える 1