我有个存储过程:create or replace procedure p_createseq(tablename in varchar2)
is
strsql varchar2(500);
begin
strsql:='create sequence seq_'||tablename||' minvalue 100 maxvalue 99999999 start with 100 increment by 1 nocache';execute immediate strsql;
end p_createseq;
执行的时候报错:
ORA-01031: 权限不足
ORA-06512: 在 "MYDB.P_CREATESEQ", line 7
ORA-06512: 在 line 2
我的账户有connect,resource权限,难道这个权限无法使用“execute immediate”吗?

解决方案 »

  1.   


    grant create procedure to user_name;
    grant create sequence to user_name;
    --显示的赋权。
      

  2.   

    这两个resource本身就包含的吧,而且我存储过程create ok的,就执行时报错!
      

  3.   

    而且,创建seq时,我通过PL/SQL的界面操作是可以的,也没有显示的
    “grant create procedure to user_name;
    grant create sequence to user_name;”直接打脚本执行“
    create sequence seq_test minvalue 100 maxvalue 99999999 start with 100 increment by 1 nocache;
    ”也而已,就执行
    “exec  p_createseq('test2');”报上面的错!
      

  4.   

    oracle为了安全,(理由我也不知道),在存储过程里面执行更严格的权限检查。需要给用户赋予权限
    grant create sequence to youruser;
      

  5.   

    直接一点create all privileges to xxx;