存储过程创建表
1.在oracle的存储过程中,不能直接使用DDL语句,比如create、alter、drop、truncate等。
解决:使用动态sql语句 :execute immediate
create or replace procedure proc_cw
authid current_user as---授予调用者在存储过程中拥有其角色权限
v_count number;
begin
---有表则删除重建
select count(1) into v_count from user_tables where table_name =upper('CW');---表名需大写
if v_count > 0 then
execute immediate 'drop table cw';
end if;
execute immediate 'create table cw(
product varchar2(20),
year varchar2(20)
) ';
---插入数据
execute immediate 'insert into cw values(''存款'',''2023'')';
commit;
end proc_cw ;
2、执行存储过程
1)call proc_cw ();
2)begin proc_cw ; end;