Bonjour,
j'ai créé le trigger suivant qui, à la création d'une table/vue dans le schéma CADASTRE, "grant" le droit SELECT au rôle CADASTRE_CONSULT sur cette table/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
16
17
18
19
20 CREATE OR REPLACE TRIGGER do_grant after CREATE ON schema declare l_str varchar2(255); l_job number; begin IF ( ora_dict_obj_type = 'TABLE' ) then l_str := 'execute immediate "grant select on ' || ora_dict_obj_name || ' to CADASTRE_CONSULT";'; dbms_job.submit( l_job, REPLACE(l_str,'"','''') ); elsif ( ora_dict_obj_type = 'VIEW' ) then l_str := 'execute immediate "grant select on ' || ora_dict_obj_name || ' to CADASTRE_CONSULT";'; dbms_job.submit( l_job, REPLACE(l_str,'"','''') ); end IF; end;
Je cherche aujourd'hui à pouvoir différencier certaines tables/vues. Je voudrais par exemple attribuer les tables qui commencent par EDI_ aux rôles CADASTRE_CONSULT et CADASTRE_CONSULT_EDI et celles qui commencent par DGI_ au rôle CADASTRE_CONSULT uniquement.
Je voudrais faire quelques chose du style :
C'est la comparaison de chaines de caractère en PL/SQL dans la condition que je ne sais pas réaliser. Pouvez-vous m'aider svp ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 si (ora_dict_obj_name contient/commence par EDI_) alors Grant Select on ora_dict_obj_name to CADASTRE_CONSULT AND CADASTRE_CONSULT_EDI sinon Grant Select on ora_dict_obj_name to CADASTRE_CONSULT finsi
Merci pour vos réponses.
Partager