create
or
replace
procedure
ttt
is
begin
delete
from
bbb
where。。。。。。
;
commit;
execute
immediate
'create
table
aaa
as
select
*
from
bbb';
commit;
--删除表bbb所有数据
execute
immediate
'truncate
table
bbb';
commit;
--将临时表aaa的数据转移到bbb表中
insert
into
bbb
select
*
from
aaa;
commit;
--删除临时表aaa
execute
immediate
'drop
table
aaa';
commit;
end;
顺便说一句,你之前为什么要delete表bbb里的数据呢?还有,你存储过程里没end
---------补充------
||是用来区分普通字段和变量字段的
他那个写法不和我这个一样吗?
他那个只不过把我单引号里的sql设置成了一个变量,叫str
1、DELETE
是不会释放表空间的。
2、truncate
table
是可以释放表空间的。
因此你需要做的是在你删除的数据表上使用,truncate
table
表名;
---
以上,希望对你有所帮助。
你的表空间是设定的自动增长还是手动增长
如果是手动增长你需要增加表空间的大小或者新建一个表空间数据文件
如果你是要降低表空间的使用率,你应该是truncate
table
或者
drop
table
delete
table
是不能降低表空间的使用率的,ORACLE
只是对你的表数据做了个标记,表示该BLOCK可以重用。