AS400上多成员文件的SQL查询

时间:2008-12-06 17:27:43

标签: sql jdbc db2 ibm-midrange jt400

在5250会话中的交互式SQL中的AS400上,

select * from myfile
仅当myfile有多个成员时,

才会从一个成员返回行。

如何从特定成员获取行?

重要:最后我想用jt400对JDBC做这个,所以我真的想要一个能在那里工作的解决方案。

感谢。

4 个答案:

答案 0 :(得分:37)

您可以使用create alias命令创建别名:

CREATE ALIAS myLibrary/myAlias FOR memberLibrary/memberFile(memberName)

这将允许您使用别名对该成员运行sql,就像使用任何其他文件一样:

SELECT * FROM myLibrary/myAlias

请记住,别名会在你的会话后留下来,它们不是暂时的。因此,如果您在完成后不需要别名,请在QTEMP中创建别名,或者在完成后显式删除别名:

DROP ALIAS myLibrary/myAlias

HTH

答案 1 :(得分:7)

为成员创建SQL别名并查询别名,请参阅this page以获取示例。

答案 2 :(得分:0)

SQL别名

OS/400 R430以后支持SQL别名声明。为必须访问的每个成员创建别名,然后从应用程序引用别名。别名是一个持久对象 - 它必须只创建一次。创建CREATE ALIAS时,ALIAS中引用的成员不一定存在。任何SQL工具(例如OS/400i5/OS interactive SQL (STRSQL)iSeries Navigator's Run SQL Scripts)都可用于创建别名,例如:

CREATE ALIAS MYLIB.FILE1MBR1 FOR MYLIB.MYFILE(MBR1) 
CREATE ALIAS MYLIB.FILE1MBR2 FOR MYLIB.MYFILE(MBR2)

http://www-01.ibm.com/support/docview.wss?uid=nas1f1eaeecc0af19cc38625669100569213

答案 3 :(得分:0)

这是一个旧线程,仍然是搜索结果列表中的第一个线程,我想增强前面的回答:

有时候,您只需要一次创建别名即可进行数据库分析,然后您想要创建别名并在查询后立即将其删除;您还有一个包含许多表的数据库库,并且不想在每个查询中都限定该库,因此您可以使用SET SCHEMA;我喜欢使用QTEMP库来创建别名,因为IBM i AS400服务器上的QTEMP本质上用于临时对象:

set schema=mylibrary;

create alias qtemp.aliasx for table1(membera);
create alias qtemp.aliasy for table2(memberb);

select  * from qtemp.aliasx;
select  * from qtemp.aliasy;

drop alias qtemp.aliasx;
drop alias qtemp.aliasy;