create or replace procedure ttt is
begin
delete from bbb where。。。。。。 ;
commit;
create table aaa as select * from bbb;
commit;
--删除表bbb所有数据
truncate table bbb;
commit;
--将临时表aaa的数据转移到bbb表中
insert into bbb select * from aaa;
commit;
--删除临时表aaa
drop table aaa;
commit;
但是如果这么做了,编译的时候会报错。
错误:PLS-00103: 出现符号 "CREATE"在需要下列之一时:
begin case declare end
exception exit for goto if loop mod null pragma raise return
select update while with <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge pipe
行:12
文本:create table temp as select * from EMR_COURSERECORD_LOGO;
commit;
end ttt;
如果把create那个注释掉,truncate也会报错。不知道是为什么。
我用的是oracle 10g。是不是不能在存储过程中加create和truncate呢?大家帮我看看什么问题啊?
我还用execute immediate试了一下,虽然编译通过,但是execute immediate里面的东西是不能运行的。
不需要大家粘贴复制一大堆东西,只需要大家复制到自己的PL/SQL看看,希望能得到完美答复,谢了大家。
谢谢ysyhyt和badkano,我觉得ysyhyt回答应该是对的,不能加动态SQL。
但是问题又来了,你能帮我修改一下我要写的存储过程吗?
因为str:= 'create table '||tname|| '('||c1||' char,'||c2||' char) ';
execute immediate str;
我有点看不懂啊,||是什么意思啊?