2016-11-28 12 views
0

XMLリクエストでSPを呼び出す必要があります。この1は、次のような要素を持つXML文書としてウィザードによって自動生成されます。属性の代わりにxml要素を使用したBizTalkストアドプロシージャ要求

<xs:element name="sp_storedProcedureName"> 
    <xs:complexType> 
     <xs:attribute name="Field1" type="xs:string"/> 
     <xs:attribute name="Field2" type="xs:string"/> 
     . . . 

SPパラメータのいくつかがnullであるかもしれません。ヌル属性は「属性なし」を意味するため、スキーマの検証に失敗するため、このシナリオには属しません。

私は手動でこのように要求スキーマに再作​​成:

<ns0:sp_storedProcedureName> 
    <ns0:Field1>AB</ns0:Field1> 
    <ns0:Field2>ZZ</ns0:Field2> 
    <ns0:FieldN xsi:nil="true" /> 
    . . . 
:値であることを意味し、(LINTは、マップのテストが失敗し、そう言う)

<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"/> 
     . . . 

をして作成したメッセージが有効であると思われます

これは私が必要とするものです。

HRESULT="0x80040e10" 
Description="Procedure or function 'sp_storedProcedureName' expects parameter '@Field1', which was not supplied." 

まだそれが値がXMLによって供給されていることは明らかだが、私は、SQLアダプタが要素から読み取ることができないと思い、しばらく:メッセージは送信がエラーで失敗した送信ポートパイプラインに到達し 主要素の属性から読み取ることができます。

これはケースですか?

私の主な質問は次のとおりです。xmlを使用してストアドプロシージャにnull値を渡すにはどうすればよいですか?

+0

名前空間を正しく宣言していますか? – Shnugo

+0

@ Shnugoはい。私は名前空間を残している属性を、ウィザードで宣言されているように設定するだけです。さもなければ私は属性を持つスキーマの送信に失敗します – strongmmc

+1

Field1の既定値をnullに設定するようにストアドプロシージャを変更します。 P.S.なぜまだbiztalk-2006のために開発していますか?それはサポート外です。 – Dijkgraaf

答えて

0

マッピングするペイロードにマッピングされているものが存在しない場合、そのフィールドがBizTalkから渡されない場合、既定値はNULLになるようにストアドプロシージャを変更します。

関連する問題