1. 程式人生 > >proc之建表添加數據報錯解決

proc之建表添加數據報錯解決

comm test begin 想要 sele beijing lec pla dep

需求是:我想要創建一個存儲過程,在這個存儲過程裏要完成兩件事情,一要創建一個表,二要在這個表裏添加數據;

create or replace procedure ctab as
i number;
begin
execute immediate ‘create table dd as
select * from dept‘;
execute immediate ‘alter table dd add constraint pk_dd primary key(deptno)‘;

for i in 901 .. 10000 loop
insert into dd values (i, ‘TEST‘, ‘BEIJING‘);
end loop;
commit;

end;

編譯報錯,提示表DD不存在。

編譯器認為這個表DD是沒有創建,所以報錯。下面是修改過的存儲過程。

create or replace procedure ctab as
i number;
begin
select count(*) into i from user_tables where table_name = ‘DD‘;
if i = 0 then
execute immediate ‘create table dd as
select * from dept‘;
execute immediate ‘alter table dd add constraint pk_dd primary key(deptno)‘;

for i in 901 .. 10000 loop
insert into dd values (i, ‘TEST‘, ‘BEIJING‘);
end loop;
commit;

end if;
end;

問題解決。

proc之建表添加數據報錯解決