一、系统表:
1、User_Tables:存储用户下的所有表的信息;
2、dba_tables:存储管理员权限下的所有表的信息;
3、all_tables:存储所有表的信息。
二、判断对象是否存在
1、判断表
我们只能通过使用select count(*) 的方式判断当前表是否存在,返回1则代表存在,0则代表不存在,例如:
SELECT COUNT(*) FROM User_Tables WHERE table_name = ‘CODE_BMDM‘;(在SQL中使用这种方法亦可)
需要注意的是:表名(或者其他对象名)必须全部大写,有特殊字符的除外(表名之间有空格等特殊字符),否则查询不到。其中的 User_Tables(用户下的所有表) 也可以换成dba_tables(管理员权限下的所有表) 或者all_tables(所有表)
- declare
- v_exists number;
- begin
- --1、任务类型 TASK_TYPE_CD 建表...
- select count(*) into v_exists from user_tables where table_name = ‘EDW_T99_TASK_TYPE_CD‘;
- if v_exists > 0 then
- execute immediate ‘drop table EDW_T99_TASK_TYPE_CD‘;
- end if;
- execute immediate ‘
- create table EDW_T99_TASK_TYPE_CD
- (
- CODE_CD VARCHAR2(20) PRIMARY KEY,
- CODE_DESC VARCHAR2(100)
- )‘;
- execute immediate ‘comment on table EDW_T99_TASK_TYPE_CD is ‘‘任务类型‘‘‘;
- execute immediate ‘comment on column EDW_T99_TASK_TYPE_CD.CODE_CD is ‘‘代码‘‘‘;
- execute immediate ‘comment on column EDW_T99_TASK_TYPE_CD.CODE_DESC is ‘‘代码描述‘‘‘;
- --2、买入产品代码 BUY_TYPE_CD 建表...
- select count(*) into v_exists from user_tables where table_name = ‘EDW_T99_BUY_TYPE_CD‘;
- if v_exists > 0 then
- execute immediate ‘drop table EDW_T99_BUY_TYPE_CD‘;
- end if;
- execute immediate ‘
- create table EDW_T99_BUY_TYPE_CD
- (
- CODE_CD VARCHAR2(20) PRIMARY KEY,
- CODE_DESC VARCHAR2(100)
- )‘;
- execute immediate ‘comment on table EDW_T99_BUY_TYPE_CD is ‘‘买入产品代码‘‘‘;
- execute immediate ‘comment on column EDW_T99_BUY_TYPE_CD.CODE_CD is ‘‘代码‘‘‘;
- execute immediate ‘comment on column EDW_T99_BUY_TYPE_CD.CODE_DESC is ‘‘代码描述‘‘‘;
- end;
- /