0
我必須使用XML請求調用SP。這個是由嚮導自動生成的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參數可能爲空。這些屬性不適合這種情況,因爲空屬性意味着「無屬性」,因此模式驗證失敗。
我手動重新創建請求架構以這樣的方式
<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適配器無法閱讀一個元素,而能夠從主要元素的屬性讀取。
是這樣嗎?
我的主要問題是:如何將空值傳遞給存儲過程使用xml?
你是否正確地聲明瞭命名空間? – Shnugo
@Shnugo是的。我只使用嚮導聲明的元素來聲明屬性。否則,我會收到帶有屬性的架構的傳輸失敗 – strongmmc
更改您的存儲過程,以便將Field1的默認值設置爲空。附:爲什麼你還在爲biztalk-2006開發?這是失去支持。 – Dijkgraaf