在Oracle数据库中,我得到了一个带有Id和Name的客户表,因此,许多customerstuff表都与一个密钥相关。 使用BizTalk中的Oracle WCF适配器需要创建一个包含所有客户的文件 像这样:
<Root>
<Customers>
<Customer>
<Id>1</Id>
<Name>A</Name>
<Stuff1>
<data>
.
.
</data>
</Stuff1>
.
.
<Stuff6>
<data>
.
.
</data>
</Stuff6>
</Customer>
<Customer>
<Id>2</Id>
<Name>B</Name>
<Stuff1>
.
.
.
</Stuff6>
</Customer>
</Customers>
</Root>
我开始时选择了所有客户,并在Orchestration中循环遍历它们,从每个customerstuff表中选择当前客户的密钥,为我在结果文件中的第一个客户节点准备好所有数据。
问题:如何构建结果文件?我必须将当前的客户/ customerstuff数据添加到结果文件中,然后在保持结果文件的同时进行新的循环,我该如何在BizTalk中执行此操作?
答案 0 :(得分:0)
这可能适用于自定义XSLT,但我不确定没有看到有关输入和输出模式的更多细节。
如果你采用循环方法,这将需要3条消息
客户资料(您希望在给定的循环中附加到输出的数据)
和一个有两条消息的地图(或一些基于XPATH的操作):
为每位客户
答案 1 :(得分:0)
当您使用查询或存储过程读取数据本身时,请尝试在sql server中使用类似于“for xml”的内容。在oracle中,您可以使用dbms_xmlgen包将结果集作为xml返回:
选择dbms_xmlgen.getxml('select * from emp where rownum&lt; = 2')xmlstr from dual;