Bonjour,
j'ai cette fonction de déclarée dans SCHEMA_1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ...
Partager