数据库适配器从DB2表

时间:2017-07-28 08:31:44

标签: db2 soa jdeveloper osb

这是11g版本..

已使用操作类型创建了数据库适配器,以便对DB2表/视图执行SELECT操作。 DB2表/视图没有在数据库中定义的PRIMARY KEY列。但是我们在数据库适配器配置向导中有一个步骤,需要选择表/视图的主键列(如果已经定义了主键,则默认情况下将选中它)。让DB2视图具有类似下面的数据。

A | B | C
1 | X1 | 2.2
1 | Y1 | 4.6
1 | Z1 | 4.6
1 | X1 | 3.3
1 | Z1 |(空)

主键列被选为“B”只是为了继续下一步,因为实际上没有一列具有唯一值。 现在,当在OS​​B控制台中执行此案例的业务服务时,将收到带有重复行的响应,如下所示。

<collection><br/>
<row><br/>
<A>1</A><br/>
<B>X1</B><br/>
<C>2.2</C><br/>
</row><br/>
<row><br/>
<A>1</A><br/>
<B>Y1</B><br/>
<C>4.6</C><br/>
</row><br/>
<row><br/>
<A>1</A><br/>
<B>Z1</B><br/>
<C>4.6</C><br/>
</row><br/>
<row><br/>
<A>1</A><br/>
<B>X1</B><br/>
<C>2.2</C><br/>
</row><br/>
<row><br/>
<A>1</A><br/>
<B>Z1</B><br/>
<C>4.6</C><br/>
</row><br/>
</collection>

从响应XML中可以清楚地看出,表中存在的相同数据并未完全获取。 (即)如果有两行,其中B的值是X1但是A和A的值不同。 C,响应有两行,但值为A,B&amp;只有第一行的C(如上面XML中X1和Z1的C值所示)

还有一种方法可以选择多个列来创建复合主键,但是不能将所有三个列都选为主键,因为列C将有一些数据可以为(null),这会将错误作为主键column不能包含空值。

只能将A列和B列选为复合主键,然后响应XML将在XML中有5条记录,但在所有五条记录中都包含第一行的数据,因为A的值对于所有行都是相同的。

希望我能够解释这个问题,让每个人都明白。如果您遇到过相同或类似的问题,请在您的想法和想法中发表评论。

提前致谢

0 个答案:

没有答案