用存储过程创建数据表:
创建时注意必须添加authid current_user ,如不不加此关键语句,存储过程将出现异常,这个语句相当于赋权限。
创建语句如下:
create or replace procedure proc_create_table(
i_id varchar2
) authid current_user
as
v_tablename varchar2(30);--表名
v_flag number;
v_sql varchar(200);
begin
v_flag:=0;
v_tablename:=CONCAT('Test_', UPPER(i_id));
v_sql:='select count(*) from user_TABLES where table_name='''||v_tablename||'''';
execute immediate v_sql into v_flag;
if v_flag=0 then --如果没有这个表 则去创建
execute immediate
'create table '||v_tablename ||
'( DATETIME DATE, '||
'id varchar2(32), '||
'name varchar2(64) '||
' )';
end if;
end;
调用此存储过程:
begin
createmnl('mnl_14');
end;