本帖最后由 sumury 于 2011-12-20 14:54:37 编辑

解决方案 »

  1.   

    我查到了oracle官方文档上,有如下的记载:All roles are disabled in any named PL/SQL block (stored procedure, function, or trigger) that executes with definer rights.也就是说,命名的存储过程是不能使用角色的。如果要使用角色的功能,必须使用匿名存储过程。
      

  2.   

    正确理解是,对于创建表空间这样的语句的执行,必须动态执行。原来在PL/SQL程序中不能编写DDL语句。
    但利用动态SQL语句,便可以在PL/SQL程序中构造DDL语句并加以执行。不能直接执行。