Bonjour,
Voici une petite description de ma situation. J’utilise actuellement une base de données Oracle 10g qui a un user APPLI2006. Ce dernier contient des tables, des vues, des fonctions, etc. Il a également tous les droits (ex il a les droits DBA), je sais que c’est mal mais j’en ai hérité en l’état.
Aujourd’hui, un développeur est venu me voir pour avoir les identifiants du user APPLI2006 car il doit développer une petite application. J’aimerai bien lui créer un user spécifique pour son application et ne pas lui donner celui de APPLI2006 (ça reviendrait à lui donner les droits DBA et je ne pense pas que ce soit une bonne pratique).
Voici ce que j’ai fait :
Il peut maintenant se connecter avec le user EDI2014 et faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE USER EDI2014 IDENTIFIED BY "xxxx" DEFAULT TABLESPACE APPLI_DATA TEMPORARY TABLESPACE TEMP PROFILE DEFAULT ACCOUNT UNLOCK; GRANT CREATE SESSION TO EDI2014 ; GRANT SELECT ON APPLI2006.table1 TO EDI2014 ; GRANT SELECT ON APPLI2006.table2 TO EDI2014 ; GRANT SELECT ON APPLI2006.table3 TO EDI2014 ;
Pouvez-vous me dire si c’est la bonne approche ? sinon comment faire autrement ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part select * from APPLI2006.table1
Comment le user EDI2014 peut appeler des fonctions de APPLI2006 ?
Par exemple la requête suivante ne fonctionne pas
Ma fonction est la suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part select GET_NOM_CLIENT(t1.id_client) from APPLI2006.table1 t1
Pouvez-vous m'aider ?
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 CREATE OR REPLACE FUNCTION APPLI2006."GET_NOM_CLIENT" (_id_client NUMBER) RETURN VARCHAR2 IS tmpvar VARCHAR2 (40); BEGIN SELECT nom INTO tmpvar FROM table3 WHERE id_client = _id_client; RETURN tmpvar; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; WHEN OTHERS THEN RAISE; END GET_NOM_CLIENT; /
Merci d'avance
PoichOU
Partager