删除multischema数据库中的表

时间:2014-01-02 14:04:52

标签: sql oracle database-schema database-table sql-drop

我有一个名为TEST的数据库。

在这个数据库中我有两个不同的模式,一个叫DEV(旧),另一个叫RC(新增加)。

在multipule模式之前,使用folloing脚本删除表没有问题。

DECLARE
  CURSOR C1 IS SELECT OBJECT_NAME,OBJECT_TYPE FROM USER_OBJECTS WHERE OBJECT_TYPE!='INDEX' ORDER BY OBJECT_TYPE DESC;
  object_name VARCHAR2(50);
  object_type VARCHAR2(50);
  column_name VARCHAR2(50);
BEGIN
  OPEN C1;
  LOOP
    FETCH C1 INTO object_name,object_type;
    EXIT WHEN (C1%NOTFOUND);
    BEGIN
      IF object_type='TABLE' THEN
        EXECUTE IMMEDIATE 'DROP '||object_type||' '||object_name||' cascade constraints';
      ELSE
        EXECUTE IMMEDIATE 'DROP '||object_type||' '||object_name;
      END IF;
    END;
  END LOOP;
  CLOSE C1;
EXCEPTION
  WHEN OTHERS THEN
    NULL;
END;
EXIT

现在,如果我想为RC模式导入新转储,那么如何使用此脚本删除RC.tables。我担心如果我将使用这个脚本,那么它会删除所有与DEV和RC相关的表。

1 个答案:

答案 0 :(得分:2)

如果使用RC用户凭据连接到数据库,则脚本将仅删除RC架构中的对象。

该脚本删除您登录的架构中的对象。