在DB2 Express C中跨多个模式使用非限定SQL

时间:2014-03-11 00:38:46

标签: php sql db2 ibm-midrange

我正在尝试重新创建在本地开发服务器上的IBM iSeries中型服务器下运行的部分登台和生产服务器。我的计划是允许SQL查询与安装在Linux上的DB2 Express C无缝协作。我已经安装了PHP,ibm_db2 PHP扩展和DB2 Express C.一切正常。

我的下一步是弄清楚如何在不指定架构的情况下运行不合格的SQL语句。例如,在IBM iSeries上,我可以使用所有模式指定i5_libl选项,然后我不必担心使用完全限定的SQL。但我正在使用Linux,因此i5_libl选项不可用。

我查看了SET PATH的DB2 SQL文档,这就是我想要指定多个模式的地方,但我的理解是它只适用于CREATE,而不是静态和动态SQL。真的是我关心的一切。我还查看了SET SCHEMASET CURRENT PACKAGESET,但这些似乎只允许一个架构。

例如:

我会有表SCHEMA1.ABCSCHEMA2.DEF

我想设置它,以便我可以从我的应用程序中运行以下命令:

SELECT * FROM ABC

SELECT * FROM DEF

3 个答案:

答案 0 :(得分:3)

执行此操作的唯一方法是为相关表定义公共别名(同义词)。

CREATE PUBLIC ALIAS ABC FOR SCHEMA1.ABC
CREATE PUBLIC ALIAS DEF FOR SCHEMA2.ABC

CURRENT PATH注册只会影响对例程的搜索,而且,正如您所注意到的,一次只能有一个CURRENT SCHEMA

话虽如此,在DB2 LUW上开发iSeries上托管的应用程序的价值是值得怀疑的,因为这两个平台之间的差异远远超出了它们支持的SQL方言。

答案 1 :(得分:1)

我同意@mustaccio - 在Linux机器上重建类似IBM i的环境将会有很多工作。您最好只在IBM i机器上创建开发环境。完全基于帖子中的命名法,听起来似乎已经有了变更管理;只需向管理员询问开发环境。

假设您已经走了这条路并且出于某种原因这是不可行的,如果您真的想在Linux上使用开发环境,请将所有表放在一个模式中。如果模式中存在重复的名称,则需要使用别名。

答案 2 :(得分:1)

Scott Forstie今天早上提到了你在Linux推特上安装的DB2 Express C.

PHP ibm_db2(测试新功能): IBM目前正在测试一些新的开源PHP ibm_db2技术允许Linux上的DB2 Connect V10.5进行许多/大多数IBM i设置。如果您有兴趣,请参阅以下网站http://youngiprofessionals.com/wiki/index.php/XMLSERVICE/PHP,下载PHP ibm_db2新功能部分(仅测试),下载测试ibm_db2.zip文件。要编译到Linux机器PHP,请参阅README_IBM_i zip文件,名为“linux for IBM i people”的部分。

DB2 Connect V10.5(带有DB2 for i功能): DB2 Connect V10.5是需要购买的许可程序产品。对于生产用途,DB2 Connect Unlimited Edition for System i打包通常为IBM i客户提供最佳条款。请联系您当地的IBM代表或业务合作伙伴以获取价格信息有关此产品的详细信息,请访问以下Web站点:http://www-03.ibm.com/software/products/en/db2connunlieditforsysti。可以通过发送电子邮件至rmahendr@us.ibm.com获取用于评估目的的试用DB2 Connect许可证文件