/*用动态sql 创建表做了一个存储过程*/
create or replace procedure proc_test
(
  table_name in varchar2,
  field1 in varchar2,
  datatype1 in varchar2,
  field2 in varchar2,
  datatype2 in varchar2
) is
str_sql varchar2(500);
begin  
  str_sql:='create table '||table_name||' ('||field1||' '||datatype1||','||field2||' '||datatype2||' )';
  
  execute immediate str_sql;
  
end ;SQL〉execute porc_test(' dinya_test','id','number(8) not null',' name','varchar2(10)');begin porc_test(' dinya_test','id','number(8) not null',' name','varchar2(10)'); end;ORA-01031: 权限不足
ORA-06512: 在"YAA.PORC_TEST", line 11
ORA-06512: 在line 1问题:现在我的帐户已经是dba权限了,请教各位,我应该如何解决!急切等待!! 

解决方案 »

  1.   

    好像我记得在存储过程里面是不是创建表的,可以创建临时表。
    你可以为你的dba角色用户再加上create any table 的权限试试  如果这样还不行 估计在存储过程里面是不是动态创建表的
      

  2.   

    这个例子好象是偶以前写的一个例子。   :)你当前登陆用户没有创建表的权限,可能。 用DBA用户登陆,grant create table to 当前登陆用户。 然后再使用该用户执行这个存储过程。