Bonjour,
Dans l'optique de gérer une création automatique d'un utilisateur Oracle via une procédure stockée, je suis tombé sur un OS : la vue DBA_USERS n'est pas accessible selon le moyen par lequel on tente d'y accéder ...
Je m'explique, je travaille avec un USER ayant les droits DBA. Les 2 premiers bouts de codes ci-desous fonctionnent :
1) SQL
2) Bloc PL anonyme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SQL> SELECT DEFAULT_TABLESPACE 2 FROM DBA_USERS 3 WHERE USERNAME = 'TEST'; DEFAULT_TABLESPACE ------------------------------ TBLTEST
Par contre, impossible de créer une fonction stockée avec un appel à cette vue :
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 SQL> SET SERVEROUTPUT ON SIZE 1000000; SQL> SQL> DECLARE 2 nomTbsp VARCHAR2(64); 3 BEGIN 4 SELECT DEFAULT_TABLESPACE INTO NomTbsp 5 FROM DBA_USERS 6 WHERE USERNAME = 'TEST'; 7 8 Dbms_Output.Put_Line ('Nom = ' || nomTbsp); 9 END; 10 / Nom = TBLTEST Procédure PL/SQL terminée avec succès.
3) Fonction PL :
Je n'ai rien trouvé qui m'explique cette erreur, qui m'étonne vu les privilèges de mon User. Si quelqu'un pouvait m'expliquer, et accessoirement m'apporter une solution, je lui en serait reconnaissant,
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
24 SQL> CREATE OR REPLACE FUNCTION NomTableSpace 2 (NomUser VARCHAR2) 3 RETURN VARCHAR2 IS 4 NomTbsp VARCHAR2(64); 5 BEGIN 6 SELECT DEFAULT_TABLESPACE INTO NomTbsp 7 FROM DBA_USERS 8 WHERE USERNAME = NomUser; 9 10 Dbms_Output.Put_Line ('Nom = ' || nomTbsp); 11 12 RETURN nomTbsp; 13 END; 14 / Attention : Fonction créée avec erreurs de compilation. SQL> show Errors; Erreurs pour FUNCTION NOMTABLESPACE : LINE/COL ERROR -------- ---------------------------------------------- 6/4 PL/SQL: SQL Statement ignored 7/11 PL/SQL: ORA-00942: Table ou vue inexistante
Merci,
Xavier
Partager