Je dois appeler un SP avec une requête XML. Celui-ci est générée automatiquement par l'assistant en tant que document XML avec un élément comme ce qui suit:Requête de procédure stockée BizTalk via des éléments xml au lieu d'attributs
<xs:element name="sp_storedProcedureName">
<xs:complexType>
<xs:attribute name="Field1" type="xs:string"/>
<xs:attribute name="Field2" type="xs:string"/>
. . .
Certains des paramètres SP peut être NULL. Les attributs ne correspondent pas à ce scénario, car un attribut nul signifie "aucun attribut", donc un échec de validation du schéma.
Je recréés manuellement le schéma de la demande ainsi:
<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"/>
. . .
et le message créé semble être valide (LINT le dit, le test de carte échoue), ce qui signifie que les valeurs sont:
<ns0:sp_storedProcedureName>
<ns0:Field1>AB</ns0:Field1>
<ns0:Field2>ZZ</ns0:Field2>
<ns0:FieldN xsi:nil="true" />
. . .
qui est exactement ce dont j'ai besoin. Lorsque le message atteint le pipeline de port d'envoi de la transmission échoue avec l'erreur:
HRESULT="0x80040e10"
Description="Procedure or function 'sp_storedProcedureName' expects parameter '@Field1', which was not supplied."
mais il est clair que la valeur est fournie par le xml, mais je suppose un adaptateur SQL ne peut pas lire à partir d'un élément, alors que est capable de lire à partir d'un attribut de l'élément principal.
Est-ce le cas?
Ma question principale est: comment puis-je passer des valeurs nulles à une procédure stockée en utilisant un xml?
Déclarez-vous correctement les espaces de noms? – Shnugo
@Shnugo oui. Je sobstitute seulement les attributs avec les éléments quittant l'espace de noms de la façon dont il a été déclaré avec l'assistant. Sinon, je recevrais la transmission échoue pour le schéma avec les attributs ainsi – strongmmc
Modifier votre procédure stockée afin que vous définissiez la valeur par défaut de Field1 à null. P.S. Pourquoi êtes-vous encore en train de développer pour biztalk-2006? C'est hors de support. – Dijkgraaf