[Trigger] comparer chaine de caractères
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:
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 :
Code:
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 |
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 ?
Merci pour vos réponses.