我想从SELECT
语句中获取结果表,然后将其移动到物理文件中。
我希望使用(每W3Schools):
SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename
不幸的是,根据IBM手册(DB2 for i SQL参考)
SELECT INTO
语句生成一个由最多行组成的结果表,并将该行中的值分配给变量。
那么我想也许我可以使用:
INSERT
语句将行插入表或视图中 本声明有三种形式:
1.INSERT
使用全选表单用于使用其他表或视图中的值将一行或多行插入表或视图。
不幸的是,它似乎对我不起作用。
INSERT INTO <tablename>
FROM ( SELECT (*) FROM <querytableA>
UNION
SELECT (*) FROM <querytableB>)
我能够将结果表移动到物理文件中,但为了做到这一点,我必须声明一个游标,然后用do … while
写入物理文件,一次一个记录。我认为这个丑陋且不优雅,并且希望能够使用SELECT INTO
或INSERT INTO
声明。
请帮我把结果表“转储”到一个带有一个优雅语句的物理文件中。
操作系统:IBM i v6.1
数据库:DB2
答案 0 :(得分:8)
如果您想自动创建表格,您还可以使用以下表格:
CREATE TABLE new_table_name
AS (SELECT * FROM <querytableA>
UNION SELECT * FROM <querytableB>) WITH DATA
请注意,您可以在查询上创建视图,以根据需要动态构建结果集。然后可以从任何HLL引用该视图作为逻辑文件:
CREATE VIEW new_table_name
AS SELECT * FROM <querytableA>
UNION SELECT * FROM <querytableB>
答案 1 :(得分:3)
这是正确的语法:
INSERT INTO <dest_table>
Select * FROM <querytableA>
UNION
Select * FROM <querytableB>
要实现此目标,<dest_table>
必须已存在,其列与<querytableA>
和<querytableB>
中的列兼容。
有关详细信息,请参阅“Inserting rows using a select-statement”。