在我们的批处理项目中,我们运行一个shell脚本,该脚本依次调用Web服务。我们的要求是在db 2数据库上运行选择查询,然后提取1000 A_TYPE帐户,然后我们将必须使用这些帐户来获取其他帐户(a_type,b_type collumns)的列表。
问题是,对于每1000个A_TYPE帐户,我必须准备1000次语句并执行1000次以获取B_TYPE帐户。
因此,如果有人建议我一种通过a_type帐户的列表或数组的方法,然后获取a_type的列表或hashmap,b_type帐户,以便我可以进一步使用它们,这将非常有帮助。另外,我还必须用b_type帐户更新我的db2 db,以代替a_type帐户。我所有的逻辑都写在Web服务操作(Java)本身中。
更新:
是的,我直接通过jndi names.in WebS服务处理程序逻辑I LL致电DB'S.I Donot知道使用的DB2版本,因为我使用JNDI名称访问它,Oracle是10 G.i,例如10 g.i。
SELECT A_TYPE account from ADB2 TABLE based on conditions (?,?) FETCH 1000 records only"` and `SELECT A_TYPE_Account,B_TYPE_Account from ORACLE_TABLE where A_TYPE_Account='?(A_TYPE)'
不,我不必担心交易。我没有主机变量和DB2动态查询的想法。
假设您做这个oracle< -> db2的东西很多,请考虑获得
- DRDA的Oracle透明网关 http://www.oracle.com/technetwork/database/gateways/index.html
- IBM Infosphere Federation Server
http://www-03.ibm.com/software/products/en/ibminfofedeserv/
注意,如果您具有DB2高级企业服务器版(AESE),则包括Infosphere Federation Server。
这两种产品都可以让您使用发送给一个DB的单个加入查询,该查询返回两个DB的数据。Oracle产品真的很不错,因为它允许Oracle将DB2数据库视为另一个Oracle DB,并且DB2将Oracle数据库视为另一个DB2数据库。(感谢IBM发布DRDA协议DB2使用的客户端和服务器端的规格。太糟糕了。没有其他供应商愿意这样做,尽管他们毫不费力地利用IBM这样做的事实。)
这两个产品都是我所说的便宜的。
价格便宜,您可以利用ODBC的Oracle数据库网关
http://docs.oracle.com/cd/e16655_01/gateways.121/e17936/toc.htm
如果您真的想继续沿着您开始的道路...我看到两个选项
1)让您的Java应用批处理插入1000 db2记录到Oracle的临时表中,然后将其用于最终结果。
从Java插入Oracle
2)将1000个键入记录作为单个字符串参数传递到Oracle上的存储过程中,该过程将它们解析并使用它们(假设它们不太大)