门外汉求教多表合并

[复制链接]
查看11 | 回复7 | 2007-7-4 17:27:50 | 显示全部楼层 |阅读模式
本帖最后由 yookee 于 2012-10-17 10:51 编辑
我想将一系列结构相同的表合并成一张表,
table101
...
table200
...
我知道
select f1,f2 from table001
union
select f1,f2 from table002
可以满足我的需求,但是无法批量
我准备下面这样做,但是不知道具体怎么写,或者有其他更简单的做法吗?
declare
sqlstr varchar2(200);
i number;
begin
sqlstr := 'create or replace view myview as select f1,f2 from table101';
execute immediate sqlstr;
for i in 102..200 loop
sqlstr := 'select f1,f2 from table'||to_char(i);
-->这里如何写
execute immediate sqlstr;
end loop;
end;


回复

使用道具 举报

千问 | 2007-7-4 17:27:50 | 显示全部楼层
本帖最后由 bell6248 于 2012-10-17 11:36 编辑
没有数据库环境, 帮忙测试一下, 有问题说清楚。
declare

str1 varchar(30);

str2 varchar(4000);
begin

str1:='select f1, f2 from table';

for i in 101..200 loop

str2:=str2 || str1 || i || ' union ';

end loop;

execute immediate 'create or replace view myview as ' || rtrim(trim(str2), 'union');
end;
回复

使用道具 举报

千问 | 2007-7-4 17:27:50 | 显示全部楼层
bell6248 发表于 2012-10-17 11:21
没有数据库环境, 帮忙测试一下, 有问题说清楚。
declare

没问题,直接用。
多谢版主。
回复

使用道具 举报

千问 | 2007-7-4 17:27:50 | 显示全部楼层
本帖最后由 iscogeek 于 2012-10-17 17:28 编辑
先建表,然后批量insert into进去啊.如果速度不行,在insert后加个/*+append*/
declare
sqlstr varchar2(200);
i number;
begin
sqlstr := 'create table mytable nologging as

select f1,f2 from table101';
execute immediate sqlstr;
for i in 102..200 loop
sqlstr := 'insert into mytable(f1,f2)
select f1,f2 from table'||to_char(i);
execute immediate sqlstr;
commit ;
end loop;
end;
回复

使用道具 举报

千问 | 2007-7-4 17:27:50 | 显示全部楼层
用bell的就可以
回复

使用道具 举报

千问 | 2007-7-4 17:27:50 | 显示全部楼层
本帖最后由 LuiseDalian 于 2012-10-17 20:54 编辑
实测成功:


01.gif (7.72 KB, 下载次数: 3)
下载附件
2012-10-17 20:53 上传

创建的测试环境:
--使用PL/SQL查询大量相同结构的表中的数据
CREATE TABLE T3
(
C1 VARCHAR2(10),
C2 NUMBER(4)
);

INSERT INTO T3 VALUES('01', 1);

INSERT INTO T3 VALUES('02', 2);
CREATE TABLE T4
(
C1 VARCHAR2(10),
C2 NUMBER(4)
);

INSERT INTO T4 VALUES('001', 10);
INSERT INTO T4 VALUES('002', 20);
CREATE TABLE T5
(
C1 VARCHAR2(10),
C2 NUMBER(4)
);

INSERT INTO T5 VALUES('0001', 100);
INSERT INTO T5 VALUES('0002', 200);复制代码

回复

使用道具 举报

千问 | 2007-7-4 17:27:50 | 显示全部楼层
合并干吗用
回复

使用道具 举报

千问 | 2007-7-4 17:27:50 | 显示全部楼层
merge
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行