DECLARE
v_table_name VARCHAR2(30);
v_syn_name VARCHAR2(30);
v_cnt NUMBER;
BEGIN
-- Boucle sur toutes les tables de l'utilisateur 'NOM_UTILISATEUR'
FOR t IN (SELECT table_name FROM all_tables WHERE owner = 'NOM_UTILISATEUR')
LOOP
v_table_name := t.table_name;
v_synname := 'SYN' || v_table_name;
-- Vérifie si le synonyme existe déjà
SELECT COUNT(*) INTO v_cnt FROM all_synonyms WHERE owner = 'NOM_UTILISATEUR' AND synonym_name = v_syn_name;
-- Crée un synonyme pour la table si le synonyme n'existe pas déjà
IF v_cnt = 0 THEN
EXECUTE IMMEDIATE 'CREATE SYNONYM ' || v_syn_name || ' FOR NOM_UTILISATEUR.' || v_table_name;
END IF;
DECLARE v_table_name VARCHAR2(30); v_syn_name VARCHAR2(30); v_cnt NUMBER; BEGIN -- Boucle sur toutes les tables de l'utilisateur 'NOM_UTILISATEUR' FOR t IN (SELECT table_name FROM all_tables WHERE owner = 'NOM_UTILISATEUR') LOOP v_table_name := t.table_name; v_synname := 'SYN' || v_table_name;
END LOOP; END; /