2016-11-28 12 views
0

Мне нужно вызвать SP с XML-запросом. Это один автоматически создан мастером в качестве документа XML с элементом, как следующее:BizTalk запрос хранимой процедуры через xml-элементы вместо атрибутов

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

Некоторые из параметров SP может быть нулевым. Атрибуты не будут соответствовать этому сценарию, так как нулевой атрибут означает «нет атрибута», поэтому сбой проверки схемы.

я вручную воссоздали схему запроса таким образом:

<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>AB</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 адаптер не может считывать данные из элемента, в то время как может читать из атрибута основного элемента.

В этом случае?

Мой главный вопрос: Как передать значения null хранимой процедуре с помощью xml?

+0

Правильно ли вы объявляете пространства имен? – Shnugo

+0

@ Шнуго да. Я только утверждаю атрибуты с элементами, оставляющими пространство имен так, как это было объявлено с помощью мастера. В противном случае я получаю передачу с ошибкой для схемы с атрибутами, а также – strongmmc

+1

Измените хранимую процедуру, чтобы установить значение по умолчанию для поля 1 равным null. Постскриптум Почему вы все еще развиваетесь для biztalk-2006? Это не поддерживается. – Dijkgraaf

ответ

0

Измените хранимую процедуру так, чтобы она по умолчанию была равна NULL, если эти поля не передаются из BizTalk, что, как правило, является поведением BizTalk, если то, что вы сопоставляете, не существует в полезной нагрузке, с которой вы сопоставляете.

 Смежные вопросы

  • Нет связанных вопросов^_^