SQL>conn sys/password as sysdba;
SQL>grant create procedure to user_name;
SQL>grant execute any procedure to user_name;
SQL>conn user_name/password;
接下来再创建存储过程。

解决方案 »

  1.   

    刚才可能没有表达清楚,存储过程创建是没有问题的。但是在执行存储过程的时候,发生异常,“权限不足”。SQL> exec PR_SYS_CREATEDBUSER
    BEGIN PR_SYS_CREATEDBUSER; END;*
    ERROR位于第一行:
    ORA-01031: 权限不足
    ORA-06512: 在"LCG449999.PR_SYS_CREATEDBUSER", line 9
    ORA-06512: 在line 1这是SQL Plus的执行结果
      

  2.   

    SQL>grant execute any procedure to user_name;
    授权后还有问题吗?
      

  3.   

    sql>connect system/manager;
    sql>grant create any user to LCG449999;
    sql>connect LCG449999/LCG449999;
      

  4.   

    我直接把“CREATE USER testuser    PROFILE DEFAULT   IDENTIFIED BY test DEFAULT TABLESPACE system   TEMPORARY TABLESPACE TEMP ”直接在SQL Plus中执行,没有问题。用户被创建SQL> CREATE USER testuser    PROFILE DEFAULT   IDENTIFIED BY test DEFAULT TABLESPACE system   TEMPORARY TABLESPACE TEMP ;用户已创建SQL> 上面时SQL Plus的执行情况。但是执行存储过程就是不行。急啊
      

  5.   

    是不是执行过程时打开数据库的权限不够?与在SQL Plus里登录的用户是同一个吗?
      

  6.   

    如果是这样的话,请这样:
    grant connect,resource to username;
      

  7.   

    回jukyy:是啊,是同一个用户。
      

  8.   

    在pl/sql中只能使用dml和事物控制语句!!!
      

  9.   

    create or replace procedure p_test1
    astmpsql varchar2(1000);
    begintmpsql:='Create table aaa(id varchar2(10),name varchar2(10),val1 number(21,4)) tablespace test1';
    execute immediate tmpsql;end p_test1;以上存储过程执行时的提示和楼主遇到的相仿,但我执行grant create table to test1
    后运行就没有问题了。
    在command window 中 “exec p_test1;”
    在sql window 中“begin  p_test1;  end;”
      

  10.   

    to mouse8899    你从哪里得到这个说明的?我在Oracle的文档中查,没有这方面的说明。还望指出:)to  Ranma_True    我用这个用户直接创建数据库用户是成功的。所以,并不是创建用户的权限不够。
      

  11.   

    我记得在procedure还是trigger里面好像要用dbms_***一个函数才可以执行ddl吧,那个帖子找不到了:(
      

  12.   

    不要用动态的SQL
    在存储过程中直接写出 
    CREATE USER testuser    PROFILE DEFAULT   IDENTIFIED BY test DEFAULT TABLESPACE system   TEMPORARY TABLESPACE TEMP ;在试试看!