Problème avec "grant create any procedure to"
Bonjour à tous,
J'ai 2 user dans la même instance :
sunopsis et odshr
Je me connecte avec odshr pour donner le droit suivant à sunopsis :
grant create any procedure to sunopsis ;
Je me connecte avec sunopsis et je lance le script suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| CREATE OR REPLACE PROCEDURE odshr.Script_desactive_PK_ODS IS
CURSOR c_table IS
SELECT table_name, constraint_name
FROM SYS.ALL_CONSTRAINTS
WHERE OWNER = 'ODSHR'
and table_name like 'HRA_%'
and constraint_type = 'P' ;
i c_table%ROWTYPE;
BEGIN
FOR i IN c_table
LOOP
EXECUTE IMMEDIATE 'alter table ODSHR.' || i.table_name || ' disable constraint ' || i.constraint_name ;
END LOOP;
END; |
Mais j'obtiens l'erreur suivante :
Error on line 0
CREATE OR REPLACE PROCEDURE odshr.Script_desactive_PK_ODS IS
CURSOR c_table I
ORA-01031: insufficient privileges
Je n'y comprends rien... :(
Note : la procédure fonctionne très bien si je la lance avec odshr
grant create table to odshr
Ton user odshr possède-t-il le droit de gérer ses propres tables ?
J'ai essayé et cela fonctionne chez moi
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| SQL> create user sunopsis identified by sunopsis
2 default tablespace data
3 temporary tablespace temp;
User created.
SQL> grant resource to sunopsis;
Grant succeeded.
SQL> grant create session to sunopsis;
Grant succeeded.
SQL> grant create any procedure to sunopsis;
Grant succeeded.
SQL> create user odshr identified by odshr
2 default tablespace data
3 temporary tablespace temp;
User created.
SQL> grant resource to odshr;
Grant succeeded.
SQL> grant create session to odshr;
Grant succeeded.
SQL> grant create table to odshr; -- le user doit pouvoir faire ALTER TABLE
Grant succeeded.
SQL> connect sunopsis/sunopsis@&TNS
Connected.
SQL> create or replace procedure odshr.script is
2 cursor c_table is select table_name, constraint_name
3 from all_constraints
4 where owner = 'ODSHR' ;
5 i c_table%ROWTYPE;
6 begin
7 for i in c_table
8 loop
9 EXECUTE IMMEDIATE 'alter table ODSHR.' || i.table_name || ' disable c
onstraint ' || i.constraint_name ;
10 end loop ;
11 end;
12 /
Procedure created.
SQL> connect odshr/odshr@&TNS
Connected.
SQL> desc odshr.script
PROCEDURE odshr.script |