2012年3月5日星期一

Delete Oracle用户下的表及序列(drop.sql)


DECLARE
    v_table_name USER_TABLES.table_name%TYPE;
    v_sequence_name USER_SEQUENCES.sequence_name%TYPE;
    --两个游标定义
    CURSOR c_TableName IS 
        SELECT table_name FROM USER_TABLES;
    CURSOR c_SequenceName IS
        SELECT sequence_name FROM USER_SEQUENCES;
BEGIN
    --打开游标
    OPEN c_TableName;
    LOOP
        --获取表名
        FETCH c_TableName INTO v_table_name;




        --作删除表的操作
        DROP TABLE v_table_name;
        --DBMS_OUTPUT.PUT_LINE('表: ' || v_table_name);


        --退出循环的条件
        EXIT WHEN c_TableName%NOTFOUND;
    END LOOP;


    --关闭游标c_TableName
    CLOSE c_TableName;


    --打开序列系统游标
    OPEN c_SequenceName;
    LOOP
        --获取序列名
        FETCH c_SequenceName INTO v_sequence_name;


        --
        DROP SEQUENCE v_sequence_name;
        --DBMS_OUTPUT.PUT_LINE('表: ' || v_sequence_name);


        --
        EXIT WHEN c_SequenceName%NOTFOUND;


    END LOOP;
    --关闭游标c_SequenceName
    CLOSE c_SequenceName;
END;
/




没有评论:

发表评论