У меня есть две таблицы ниже.
A_DETAILS
B_DETAILS
У меня ниже двух SYNONYM, созданных на указанных выше таблицах
A_DETAILS указывает на -> L_DETAILS
B_DETAILS указывает на -> R_DETAILS
Я хочу перевернуть синоним в какой-то момент времени, например
A_DETAILS указывает на -> R_DETAILS
B_DETAILS указывает на -> L_DETAILS
Я попробовал приведенный ниже код, но он создал как синоним одной таблицы, так и удаление из другой таблицы.
BEGIN
FOR reg IN
(SELECT SYNONYM_NAME, TABLE_NAME, OWNER
FROM ALL_SYNONYMS
WHERE OWNER IN ('MY_SCHEMA') AND SUBSTR (TABLE_NAME, 1, 2) = 'A_')
LOOP
v_Statement := 'CREATE OR REPLACE SYNONYM '|| reg.owner|| '.'|| reg.SYNONYM_NAME|| ' FOR '|| reg.owner|| '.'|| 'B_'|| SUBSTR (reg.TABLE_NAME, 3);
EXECUTE IMMEDIATE v_Statement;
END LOOP;
FOR reg
IN (SELECT SYNONYM_NAME, TABLE_NAME, OWNER
FROM ALL_SYNONYMS
WHERE OWNER IN ('MY_SCHEMA') AND SUBSTR (TABLE_NAME, 1, 2) = 'B_')
LOOP
v_Statement :='CREATE OR REPLACE SYNONYM '|| reg.owner|| '.'|| reg.SYNONYM_NAME|| ' FOR '|| reg.owner|| '.'|| 'A_'|| SUBSTR (reg.TABLE_NAME, 3);
EXECUTE IMMEDIATE v_Statement;
END LOOP;
END;