【发布时间】:2018-12-31 22:11:48
【问题描述】:
我有以下两张表。
A_DETAILS
B_DETAILS
我在上面的表格上创建了以下两个同义词
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;
【问题讨论】:
标签: sql oracle stored-procedures synonym