Oracle创建新表之前需要drop掉数据库内的同名表,但drop时如果不存在与要创建表同名的表会报错,所以可以在创建新表之前通过查询判断是否有该同名表,再决定后续操作。
/*==============================================================*/
/* DBMS name: ORACLE Version 11g */
/* Created on: 2017-09-29 17:58:32 */
/*==============================================================*/
/*==============================================================*/
/* Public procedure : proc_dropifexists(p_table in varchar2) */
/* Description: 判断是否存在要创建的表,存在则删掉 */
/* Create on: 2017-09-29 17:58:32 */
/*==============================================================*/
CREATE OR REPLACE PROCEDURE PROC_DROPIFEXISTS(P_TABLE IN VARCHAR2)
IS
V_COUNT NUMBER(10);
BEGIN
SELECT COUNT(*)
INTO V_COUNT
FROM USER_TABLES
WHERE TABLE_NAME = UPPER(P_TABLE);
IF V_COUNT > 0
THEN
EXECUTE IMMEDIATE 'drop table '||P_TABLE||' purge';
END IF;
END PROC_DROPIFEXISTS;
/*==============================================================*/
/* Decription: 如果存在要创建的表则将其删除 */
/*==============================================================*/
CALL PROC_DROPIFEXISTS('EMPLOYEE');
/*==============================================================*/
/* Table: "EMPLOYEE" */
/*==============================================================*/
CREATE TABLE "EMPLOYEE"
(
ID NUMBER(20) NOT NULL,
MANAGECOM VARCHAR2(11) NOT NULL,
"NAME" VARCHAR2(100) NOT NULL,
"LEVEL" VARCHAR2(6) NOT NULL,
CONSTRAINT EMPLOYEE PRIMARY KEY (ID)
);
COMMENT ON TABLE "EMPLOYEE " IS '员工信息表';
COMMENT ON COLUMN "EMPLOYEE".ID IS '编号;
COMMENT ON COLUMN "EMPLOYEE ".MANAGECOM IS '机构 ';
COMMENT ON COLUMN "EMPLOYEE"."NAME" IS '姓名';
COMMENT ON COLUMN "EMPLOYEE"."LEVEL" IS '职级';