create or replace procedure test(aa in varchar2)
as
str varchar2(50);
begin
 str:='create table test_a as select * from b';
 execute immediate str;
end;
/

解决方案 »

  1.   

    在system用户下:
    grant create any table to user_name;
      

  2.   

    我新建一个用户abc,将它赋予DBA的权限,为什么我执行上面的过程时,系统告诉我执行execute immediate str的权限不足呢??
      

  3.   

    那我怎么样才能执行execute immediate str呢?
    楼上的可以再说的明白一些吗?
      

  4.   

    在system/manager这个用户下的存储过程创建表才有效,
    你创建用户abc,将它赋予DBA的权限,是没有权限创建表结构的create or replace procedure test(aa in varchar2)
    as
    str varchar2(50);
    begin
     str:='create table test_a as select * from b';
     execute immediate str;
    end;
    /
      

  5.   

    一、在abc用户下执行以下语句:
    grant create any table to abc;二、执行过程:
      

  6.   

    我用abc登录,可以创建表的,我说的是没有执行execute immediate的权限!
      

  7.   

    你用sys用户登录,显示授权给你这个用户建表的权限。
    connect sys/change_on_install
    grant create any table to your_user