Oracle 检测表过程
2011-11-30 11:06
260 查看
CREATE OR REPLACE PROCEDURE PROC_DROP_TABLE(T_NAME IN VARCHAR2) IS C_TYPE VARCHAR2(20); T_COUNT INT; V_COUNT INT; I_COUNT INT; S_COUNT INT; BEGIN BEGIN SELECT OBJECT_TYPE INTO C_TYPE FROM ALL_OBJECTS WHERE OBJECT_NAME = UPPER(T_NAME); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line('THE ' || T_NAME || ' IS NOT IN THIS DATABASE !'); END; SELECT COUNT(*) INTO T_COUNT FROM USER_TABLES WHERE TABLE_NAME = UPPER(T_NAME); SELECT COUNT(*) INTO V_COUNT FROM USER_VIEWS WHERE VIEW_NAME = UPPER(T_NAME); SELECT COUNT(*) INTO I_COUNT FROM USER_INDEXES WHERE INDEX_NAME = UPPER(T_NAME); SELECT COUNT(*) INTO S_COUNT FROM USER_SEQUENCES WHERE SEQUENCE_NAME = UPPER(T_NAME); -----------TABLE IF C_TYPE = 'TABLE' THEN IF T_COUNT > 0 THEN EXECUTE IMMEDIATE 'DROP TABLE ' || T_NAME || ' purge'; DBMS_OUTPUT.put_line('THE TABLE :' || T_NAME || ' IS DROP !'); END IF; COMMIT; END IF; --------- VIEW IF C_TYPE = 'VIEW' THEN IF V_COUNT > 0 THEN EXECUTE IMMEDIATE 'DROP VIEW ' || T_NAME; DBMS_OUTPUT.put_line('THE VIEW :' || T_NAME || ' IS DROP !'); END IF; END IF; --------- SQE IF C_TYPE = 'SEQUENCE' THEN IF S_COUNT > 0 THEN EXECUTE IMMEDIATE 'DROP SEQUENCE ' || T_NAME; DBMS_OUTPUT.put_line('THE SEQUENCE :' || T_NAME || ' IS DROP !'); END IF; END IF; -------- INDEX IF C_TYPE = 'INDEX' THEN IF I_COUNT > 0 THEN EXECUTE IMMEDIATE 'DROP INDEX ' || T_NAME; DBMS_OUTPUT.put_line('THE INDEX :' || T_NAME || ' IS DROP !'); END IF; END IF; END PROC_DROP_TABLE;
相关文章推荐
- 安全检测Oracle注入点全过程
- 18-Oracle学习_存储过程-递归-树状结构的存储与展示
- oracle中过程调用函数
- Oracle存储过程使用游标遍历
- Oracle 中调试、调用(带参数的)存储过程
- oracle的存储过程返回记录集
- oracle 存储过程的基本语法
- oracle 存储过程代码
- oracle 存储过程的一些应用-02
- Oracle 11G DataGuard重启详细过程
- oracle安装过程中先决条件检查失败的解决办法
- oracle 存储过程的基本语法
- 在存储过程中执行3种oracle循环语句
- Oracle 死锁的检测查询及处理
- oracle 存储过程的基本语法
- Oracle专题14之存储过程与函数
- Java调用Oracle集合类型输出参数的存储过程
- oracle 解除 sql语句、存储过程在执行中造成的锁
- 转发Oracle 导出、导入某用户所有数据(包括表、视图、存储过程...)
- Oracle存储过程语法