我有一个名为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相关的表。
答案 0 :(得分:2)
如果使用RC用户凭据连接到数据库,则脚本将仅删除RC架构中的对象。
该脚本删除您登录的架构中的对象。