Ruslan Asked: 2016-09-27 08:41:16 +0800 CST2016-09-27 08:41:16 +0800 CST 2016-09-27 08:41:16 +0800 CST 从 IBM DB2 成员表中选择所有数据 772 旧的 as400 系统有一个叫做“成员”的东西。基本上,您可以在一张桌子上拥有多个成员,然后只使用选定的一个。 更多信息 当您从具有成员的表中进行选择时,您有几个选项。只需进行选择将从第一个成员中检索数据。或者调用存储过程来设置表的成员并检索它。或者为表创建一个别名以供成员访问它。但是没有办法只得到一个 有没有办法从所有成员的表中选择所有数据? db2 select 2 个回答 Voted Best Answer Charles 2016-09-27T09:59:19+08:002016-09-27T09:59:19+08:00 最好的解决方案是安装 DB2 Multisystem 产品并将表重新创建为本地“分区表”。 在幕后,DB2 for i 将表创建为一个多成员 PF,基本上就像您现在所拥有的一样。 但是,引用该表的 SQL 语句将自动神奇地查看所有数据。使用 OVRDBF 覆盖特定成员的旧 RPG 应用程序将继续像以前一样工作。 不幸的是,DB2 多系统并不便宜。如果您还没有它,我怀疑您是否想获得它。 您可以使用 DTAMBRS(*ALL) 创建 DDS 逻辑文件或使用 OVRDBF MBR(*ALL) 创建数据的单个“视图”。但不幸的是,只有使用记录级访问(RLA - 又称“原生 RPG I/O 操作码”)的 RPG 程序才能使用它们。SQL 访问会导致CPF4268 - Object *ALL in *N type *MEM not found. DB2 for i 中唯一对成员一无所知的 SQL 语句就是该CREATE ALIAS语句。因此,您可以CREATE ALIAS根据需要发出 a 来访问您需要的成员。或者您可以为每个成员预先创建别名。 然后,您可以像这样在 select 语句中使用别名 select * from myalias1 UNION ALL select * from myalias2 如果您可以根据上面的语句创建视图,那就太好了,不幸的是您不能。尝试这样做会导致SQL7030 - Alias MYALIAS1 for table MYTABLE in MYLIBRARY not valid for statement. 封装我知道的语句的唯一方法是将其定义为存储过程或用户定义的表函数 (UDTF)。 MandyShaw 2018-04-29T05:52:31+08:002018-04-29T05:52:31+08:00 这个问题: https ://stackoverflow.com/questions/353424/list-of-source-members-in-a-file-with-sql 提供了 sql 来列出表中的成员: SELECT TABLE_PARTITION FROM SYSPARTITIONSTAT WHERE TABLE_NAME = 'MYTABLE' AND TABLE_SCHEMA = 'MYSCHEMA' 然后,您可以遍历列表并使用 sql 依次获取对每个成员的访问权限: CREATE ALIAS QTEMP.MYMBRB FOR MYSCHEMA.MYTABLE (MBRB) 允许您提取数据: SELECT * FROM QTEMP.MYMBRB 希望这可以帮助。 或者,如果您乐于使用 IBM i CL 命令,可能有一种方法可以使用 OVRDBF(它有一个 MBR(*ALL) 选项),但我现在无法尝试这条路线。
最好的解决方案是安装 DB2 Multisystem 产品并将表重新创建为本地“分区表”。
在幕后,DB2 for i 将表创建为一个多成员 PF,基本上就像您现在所拥有的一样。
但是,引用该表的 SQL 语句将自动神奇地查看所有数据。使用 OVRDBF 覆盖特定成员的旧 RPG 应用程序将继续像以前一样工作。
不幸的是,DB2 多系统并不便宜。如果您还没有它,我怀疑您是否想获得它。
您可以使用 DTAMBRS(*ALL) 创建 DDS 逻辑文件或使用 OVRDBF MBR(*ALL) 创建数据的单个“视图”。但不幸的是,只有使用记录级访问(RLA - 又称“原生 RPG I/O 操作码”)的 RPG 程序才能使用它们。SQL 访问会导致
CPF4268 - Object *ALL in *N type *MEM not found.
DB2 for i 中唯一对成员一无所知的 SQL 语句就是该
CREATE ALIAS
语句。因此,您可以CREATE ALIAS
根据需要发出 a 来访问您需要的成员。或者您可以为每个成员预先创建别名。然后,您可以像这样在 select 语句中使用别名
如果您可以根据上面的语句创建视图,那就太好了,不幸的是您不能。尝试这样做会导致
SQL7030 - Alias MYALIAS1 for table MYTABLE in MYLIBRARY not valid for statement.
封装我知道的语句的唯一方法是将其定义为存储过程或用户定义的表函数 (UDTF)。
这个问题: https ://stackoverflow.com/questions/353424/list-of-source-members-in-a-file-with-sql 提供了 sql 来列出表中的成员:
然后,您可以遍历列表并使用 sql 依次获取对每个成员的访问权限:
允许您提取数据:
希望这可以帮助。
或者,如果您乐于使用 IBM i CL 命令,可能有一种方法可以使用 OVRDBF(它有一个 MBR(*ALL) 选项),但我现在无法尝试这条路线。