Skip to content

Instantly share code, notes, and snippets.

@jzi96
Created May 23, 2012 06:05
Show Gist options
  • Save jzi96/2773499 to your computer and use it in GitHub Desktop.
Save jzi96/2773499 to your computer and use it in GitHub Desktop.
Oracle delete all tables in schema (data)
SET SERVEROUTPUT ON
exec dbms_output.enable(1000000);
DECLARE
v_typ VARCHAR2(32);
v_name VARCHAR2(32);
v_constraint VARCHAR2(32);
v_sql VARCHAR2(100);
CURSOR c_objekte IS
SELECT typ, NAME
FROM (
select 60 as seq, 'TABLE' as typ, OBJECT_NAME as name from user_objects WHERE OBJECT_TYPE='TABLE' AND not(OBJECT_NAME like 'BIN$%')
)
ORDER BY seq;
BEGIN
OPEN c_objekte;
LOOP
BEGIN
FETCH c_objekte
INTO v_typ, v_name;
EXIT WHEN c_objekte%NOTFOUND;
v_sql := 'TRUNCATE TABLE ' || v_name;
DBMS_OUTPUT.put_line(v_sql);
--EXECUTE IMMEDIATE 'BEGIN TRANSACTION';
EXECUTE IMMEDIATE v_sql;
--EXECUTE IMMEDIATE 'COMMIT TRANSACTION';
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('Error in exec ' || v_sql);
DBMS_OUTPUT.put_line('retry with delete');
v_sql := 'DELETE FROM ' || v_name;
DBMS_OUTPUT.put_line(v_sql);
--EXECUTE IMMEDIATE 'BEGIN TRANSACTION';
EXECUTE IMMEDIATE v_sql;
END;
END LOOP;
CLOSE c_objekte;
v_sql := 'PURGE RECYCLEBIN';
DBMS_OUTPUT.put_line(v_sql);
EXECUTE IMMEDIATE v_sql;
END;
/
EXIT;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment