Problème de droits d'une fonction
Bonjour,
j'ai cette fonction de déclarée dans SCHEMA_1 :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
create or replace FUNCTION F_NbInvalid RETURN NUMBER
IS
i_NbInvalid NUMBER := 0;
CURSOR c_InvalidItem IS
SELECT OWNER,OBJECT_NAME,OBJECT_TYPE,STATUS
FROM ALL_OBJECTS
WHERE OBJECT_TYPE IN ('SYNONYM','TRIGGER','FUNCTION','PROCEDURE','PACKAGE','PACKAGE BODY','VIEW', 'MATERIALIZED VIEW')
AND STATUS = 'INVALID'
AND OWNER in ('SCHEMA_1','SCHEMA_2')
ORDER BY owner , OBJECT_ID DESC;
BEGIN
FOR cur IN c_InvalidItem LOOP
i_NbInvalid := i_NbInvalid+1;
END LOOP;
RETURN i_NbInvalid;
EXCEPTION
WHEN OTHERS THEN RETURN -1;
END F_NbInvalid; |
le but etant de lister les objects invalides afin de les recompiler.
Connecté en SCHEMA_1, si j'appelle la fonction, les objets invalides de SCHEMA_2 ne sont pas pris en compte.
Toujours connecté en SCHEMA_1, si j'execute seulement le select, les objets invalides de SCHEMA_2 sont bien selectionnés.
Et le dernier test : connecté en SYS, la fonction prend bien en compte les objets de SCHEMA_2
Il doit manquer un droit sur SCHEMA_1, mais je ne vois pas lequel.
Donc si qqun a une idée ...