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生成。

相关推荐
QWQ___qwq36 分钟前
Spring Security + MyBatis-Plus 实现自定义数据库用户认证
数据库·spring·mybatis
Filotimo_1 小时前
Java后端开发标准流程:从数据库到接口的完整实现
数据库·oracle
泯仲1 小时前
从零起步学习MySQL 第一章:初识MySQL及深入理解内部数据类型
数据库·mysql
有想法的py工程师1 小时前
PostgreSQL 触发器性能评估实战(pg_stat_user_functions)
数据库·postgresql
雨后的天空@1 小时前
Mac 安装多个版本的mysql
mysql
御坂10101号2 小时前
「2>&1」是什么意思?半个世纪的 Unix 谜题
java·数据库·bash·unix
韩立学长2 小时前
基于Springboot校园志愿者服务平台77pz7812(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
代码雕刻家2 小时前
MySQL和SQL Server注意事项
数据库·mysql
代码探秘者2 小时前
【Redis】分布式锁深度解析:实现、可重入、主从一致性与强一致方案
java·数据库·redis·分布式·缓存·面试
IvorySQL2 小时前
IvorySQL 5.3 正式发布:基于 PG 18.3 内核,多特性升级+全场景适配
数据库·postgresql·开源