How to drop all user tables?

前端 未结 9 603
后悔当初
后悔当初 2020-12-04 04:22

How can I drop all user tables in oracle?

I have problem with constraints. When I disable all it is still no possible.

9条回答
  •  感情败类
    2020-12-04 04:50

    To remove all objects in oracle :

    1) Dynamic

    DECLARE
    CURSOR IX IS
    SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE ='TABLE' 
    AND OWNER='SCHEMA_NAME';
     CURSOR IY IS
     SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE 
    IN ('SEQUENCE',
    'PROCEDURE',
    'PACKAGE',
    'FUNCTION',
    'VIEW') AND  OWNER='SCHEMA_NAME';
     CURSOR IZ IS
     SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE IN ('TYPE') AND  OWNER='SCHEMA_NAME';
    BEGIN
     FOR X IN IX LOOP
       EXECUTE IMMEDIATE('DROP '||X.OBJECT_TYPE||' SCHEMA_NAME.'||X.OBJECT_NAME|| ' CASCADE CONSTRAINT');
     END LOOP;
     FOR Y IN IY LOOP
       EXECUTE IMMEDIATE('DROP '||Y.OBJECT_TYPE||' SCHEMA_NAME.'||Y.OBJECT_NAME);
     END LOOP;
     FOR Z IN IZ LOOP
       EXECUTE IMMEDIATE('DROP '||Z.OBJECT_TYPE||' SCHEMA_NAME.'||Z.OBJECT_NAME||' FORCE ');
     END LOOP;
    END;
    /
    

    2)Static

        SELECT 'DROP TABLE "' || TABLE_NAME || '" CASCADE CONSTRAINTS;' FROM user_tables
            union ALL
            select 'drop '||object_type||' '|| object_name || ';' from user_objects 
            where object_type in ('VIEW','PACKAGE','SEQUENCE', 'PROCEDURE', 'FUNCTION')
            union ALL
            SELECT 'drop '
            ||object_type
            ||' '
            || object_name
            || ' force;'
            FROM user_objects
            WHERE object_type IN ('TYPE');
    

提交回复
热议问题