AS400 / DB2跨库查询问题

时间:2009-07-01 15:33:46

标签: sql odbc db2 ibm-midrange

我在我的应用程序中查询来自ODBC的Iseries并尝试执行返回2个表的结果的查询。我需要加入表,但表是在不同的库中。我不想在我的查询中使用库标识符,因为我从dev> qa> prod移动时我的库发生了变化。但是,我确信这些表只会在这些库中,并且在其他库中不会有重复。有没有办法在不指定Iseries库的情况下执行此操作?

在本质上,我想要这个:

  select DISTINCT  GIDNBR, VSL00100.GRNAME 
FROM **QACOMMON**.CMPGRID2 CMPGRID2 INNER JOIN **QAVISLIVE**.VSL00100  VSL00100  ON VSL00100.GRNO=CMPGRID2.GIDNBR AND  
                      VSL00100.GRSUB=CMPGRID2.GIDSUB AND  
                      VSL00100.GRLOC=CMPGRID2.GIDLOC AND  
                     VSL00100.GRPOOL=CMPGRID2.GIDPOL

看起来像这样:

select DISTINCT  GIDNBR, VSL00100.GRNAME 
FROM CMPGRID2 CMPGRID2 INNER JOIN VSL00100  VSL00100  
ON 
VSL00100.GRNO=CMPGRID2.GIDNBR AND  
                  VSL00100.GRSUB=CMPGRID2.GIDSUB AND  
                  VSL00100.GRLOC=CMPGRID2.GIDLOC AND  
                 VSL00100.GRPOOL=CMPGRID2.GIDPOL

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

您需要进入ODBC连接的配置。在您正在使用的连接上单击“配置”,然后选择“服务器”选项卡。库列表选项是您需要使用的选项。

根据您的示例,您似乎需要让它说“QACOMMON QAVISLIVE”。 (没有引号)

此外,您需要将命名约定更改为* SYS而不是* SQL,并将默认收集字段设置为空白。确保系统管理员将您正在使用的用户配置文件上的CURLIB参数设置为您希望新文件的位置。

然后保存并重新尝试。不幸的是,当你在测试,生产和其他任何东西之间切换时,你必须拥有不同的数据源或更改ODBC连接。