首页 文章

有没有人有Oracle PL / SQL代码将所有同义词重命名为另一个模式?

提问于
浏览
0

Oracle 11gR2 RHEL 6.4


刚刚使用Data Pump将Oracle数据库用户(架构)导出到另一个用户 . 但是所有同义词仍然指向新模式中的旧(原始)用户 .

有没有人有一些代码(例如PL / SQL)可以运行来重命名新模式中的所有同义词,以便它们被拥有(指向)新模式?

1 回答

  • 1

    以下可能需要一些调整,但你可以从一开始

    DECLARE
      strSynonyms_owner       VARCHAR2(4000) := 'SOME_USER';
      strSynonyms_new_owner   VARCHAR2(4000) := 'NEW_USER';
      strCommand              VARCHAR2(32767);
    BEGIN
      FOR aSynonym IN (SELECT *
                         FROM ALL_SYNONYMS
                         WHERE OWNER = strSynonyms_owner)
      LOOP
        strCommand := 'CREATE OR REPLACE SYNONYM ' ||
                      aSynonym.OWNER || '.' || aSynonym.SYNONYM_NAME ||
                      ' FOR ' || strSynonyms_new_owner || '.' ||
                      aSynonym.TABLE_NAME;
        EXECUTE IMMEDIATE strCommand;
      END LOOP;
    END;
    

    没有在动物身上测试过 - 你会成为第一个!

    分享和享受 .

相关问题