ORACLE中判断表是否存在再删除表避免报错与MySql和SqlServer的不同

不同数据库中drop a table if it exists的不同:

In MySQL it is pretty easy to drop a table if it exists already. In Oracle and Microsoft's SQL Server it is a little more complicated. Today I want to present you the solutions for these two DBMS'.

MySQL:

sql 复制代码
DROP TABLE IF EXISTS [table_name]

Oracle:

sql 复制代码
BEGIN
    EXECUTE IMMEDIATE 'DROP TABLE [table_name]';
    EXCEPTION WHEN OTHERS THEN NULL;
END;

SQL Server:

sql 复制代码
IF EXISTS (
    SELECT  TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
    WHERE   TABLE_NAME = '[table_name]')
DROP TABLE  [table_name]

ORACLE中先判断表是否存在再新建表一例:

sql 复制代码
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;
/

此例用在数据仓库项目的建T99代码表脚本方案上;此脚本在方案中用Perl根据Excel生成。

相关推荐
运维行者_1 小时前
企业无线网络监控的挑战与智能化演进趋势
大数据·运维·服务器·网络·数据库
国强_dev2 小时前
技术探讨:使用 stunnel 加密转发数据库连接时,如何获取客户端真实 IP?
数据库·网络协议·tcp/ip
@insist1232 小时前
系统规划与管理师-信息系统规划核心工作要点解析
数据库·软考·系统规划与管理师·软件水平考试·系统规划与管理工程师
超级数据查看器2 小时前
超级数据查看器 v10.0 发布
java·大数据·数据库·sqlite·安卓
数安3000天2 小时前
增量数据如何自动分类分级,避免目录“过期“?
大数据·数据库
南墙上的石头4 小时前
麒麟 V10 重装人大金仓 V8R6 踩坑实录(含 MySQL 兼容模式)
数据库·mysql
画中有画4 小时前
论向量数据库在项目中的应用
数据库
spider_xcxc5 小时前
Redis 数据库高质量实践指南(一)
运维·数据库·redis·oracle·云计算
l1t5 小时前
在linux和windows中解决duckdb 1.6dev版本输出执行计划报错问题
linux·运维·数据库·windows·duckdb
执子手 吹散苍茫茫烟波6 小时前
RC 隔离级别下 MySQL InnoDB 死锁典型案例
数据库·mysql