2016-11-29 71 views
1

我不得不从表中每条记录写入到一个XML文件中的要求。我能想到下面的解决方案写入每个记录到文件中BPEL文件适配器

有一个DB适配器从表
查询记录放入一个循环的DB输出集合和调用转换(传递参数,通常迭代器值)写的第n个记录文件输入变量
写有通过(通常与表中的记录中的一列的值)
重复下一个记录,创建另一个文件动态文件名的文件

但我个人不喜欢这种方式我只是试图找出是否有任何最好的办法可以做同样的事情?我必须仅使用BPEL来执行此操作。

感谢,并随时要求进一步澄清需要

回答

0

我的理解是,你不希望从数据库中一个去选择的所有记录,并遍历它写入文件。如果是这样的话,你有没有想过下面的方法?

  1. 选择的(表1,从那里myCondition1)选择(数量(ID))将满足您的选择标准记录的总数,并保持在一个 BPEL变量,说TOTALCNT。

  2. 申报BPEL变量START = 1。

  3. 声明一个BPEL变量END = 50.Lets说,有1000条记录DB满足我们的条件,我们将只选择50条记录 从DB时间和写入到文件。

  4. 现在激发选择查询以选择数据(从table1中选择field1,field2,其中myCondition1 AND ROWNUM> = START AND ROWNUM < = END)。这将为您提供符合选择标准的前50条记录。开始和结束将被传递到由BPEL流程 适配器。

  5. 在转换后将这些记录写入文件。

  6. 检查END < TOTALCNT。如果是的话,设置开始= END和增量END 50,选择接下来的50条记录。并转到步骤4.重复这个过程,直到END> = TOTALCNT。

检查此链接为ROWNUM- http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html

+0

哈滨您好,感谢您的回复。但我的要求是将每条记录写入一个新文件。我想避免频繁的数据库命中,所以我想一次选择所有记录(最大记录数小于100),然后将每条记录写入一个新文件。所以最后,我将有100个文件的100个记录。 – user3005980