首先,Oracle 没有这种语句 create table xxx if exists!

所以我们可以另辟蹊径,通过写存储过程,然后用mybatis 调用,在动态建表之前先调用存储过程验证时候有该表,如果有就通过我们写的存储过程删除,存储过程代码如下:

CREATE OR REPLACE

procedure "PROC_DROPIFEXISTS"(

p_table in varchar2

) is

v_count number(10);

begin

select count(*)

into v_count

from user_objects

where object_name = upper(p_table);

if v_count > 0 then

execute immediate 'drop table ' || p_table ||' cascade constraints';

end if;

end;

mybatis的xml文件代码如下:

{call PROC_DROPIFEXISTS (#{tableName,jdbcType=VARCHAR})}

]]>

create table ${tableName} (id integer,name varchar(20))

]]>

Service里面直接调用就OK

package com.mypro.employee.service.impl;

import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Transactional;

import com.mypro.employee.dao.ImportMapper;

import com.mypro.employee.service.ImportService;

@Service

@Transactional(rollbackFor=Exception.class)

public class ImportServiceImpl implements ImportService{

@Autowired

private ImportMapper importMapper;

@Override

public void createTable(Map map) {

importMapper.dropTable((String)map.get("tableName"));// 调用存储过程删除表,有就删除,没有不做操作

importMapper.createTable(map); //动态建表

}

}

oracle先删后建,oracle 建表之前先删除语句相关推荐

  1. oracle在原值后增加值,Oracle DBA_SaKin(知识点整理)

    SaKin DBA 常用知识总汇 1.STARTUP NOMOUNT,该状态只有在创建数据库时或重建控制文件使用.当以该方式启动时,Oracle只启动实例并不打开数据库中的任何文件,即连控制文件都不打 ...

  2. oracle pivot函数 后求和,Oracle行转列,pivot函数和unpivot函数

    pivot函数:行转列函数: 语法:pivot(任一聚合函数 for 需专列的值所在列名 in (需转为列名的值)): unpivot函数:列转行函数: 语法:unpivot(新增值所在列的列名 fo ...

  3. Oracle怎么查外键建在哪个表上

    怎样查外键建在哪个表上 有时候删除某张表记录的时候,会报错外键约束不能删除. 如果不了解表之间的关系,可以通过以下语句查询到外键是建在哪张表上的: select * from dba_constrai ...

  4. 創建oracle用戶及表空間,window,linux下創建oracle用戶及表空間 對比 易於學習

    1.window下創建oracle用戶及表空間 --創建數據表空間 create tablespace oras_data  --表空間的名字 logging datafile 'D:\oracle\ ...

  5. Oracle drop删表后的数据恢复

    !!!芭比Q了啊!! 近期做了一次系统迁移,将测试环境的系统由Windows迁移到Centos上面,先迁应用再迁前端(前后端分离的),安装各种应用巴拉巴拉,最后到迁移数据库了,系统用的是Oracle数 ...

  6. oracle建库建表基础代码,oracle手工代码建库

    oracle手工代码建库 说明,此手工代码建库方法,适用于oracle 10g 单机环境. oracle环境变量 more .bash_profile ORACLE_BASE=/u01/app/ora ...

  7. oracle恢复drop建的表首次,案例:Oracle dul数据挖掘 没有备份情况下非常规恢复drop删除的数据表...

    天萃荷净 通过Oracle dul工具在没有备份情况下进行非常规恢复,找出drop删除的Oracle数据表中的数据进行恢复 dul对被drop对象进行恢复,需要提供两个信息 1.被删除表所属表空间(非 ...

  8. oracle Database 10g后:闪回表

    使用 Oracle Database 10g 中的闪回表特性,可以毫不费力地恢复被意外删除的表 以下是一个不该发生却经常发生的情况:用户删除了一个非常重要的表 - 当然是意外地删除 - 并需要尽快地恢 ...

  9. Oracle安装完成后如何创建表空间及用户

    1.select file_Name from dba_data_files;(查询表空间) 2.create tablespace QUAN datafile '/app/ADMINISTRATOR ...

最新文章

  1. 德鲁克对管理的十大看法
  2. Spring Boot 学习系列(02)—使用热部署,提升开发效
  3. 经典排序算法 - 鸽巢排序Pigeonhole sort
  4. 吴恩达 coursera AI 专项五第三课(上)总结+作业答案
  5. PIOLINK负载均衡高校应用
  6. java 方式配置ssm,关于SSM以及Spring boot中对于Spring MVC配置的问题
  7. Javascript开发的HTML5游戏的知识产权保护
  8. js java webservice_js调用webservice中的方法实现思路及代码
  9. Activiti的流程定义文件解析
  10. WorkFlow入门Step.3—Adding Procedural Elements-For...
  11. plaintextedit指定一行一行的高亮显示_RDKit | 基于RDKit的指定原子或键高亮
  12. ubuntu1604 克隆虚拟机后续:修改用户名、主机名和组名
  13. 24. 二叉搜索树的后续遍历序列(c++版本)
  14. 全国计算机等级考试二级cpp试题,全国高校计算机等级考试(二级C)模拟试题全套.doc...
  15. 库存进销存出入库销售mysql表结构_进销存数据库表结构设计.doc
  16. mysql死锁的例子_GitHub - yxp199249/mysql-deadlocks: 收集一些常见的 MySQL 死锁案例
  17. 【IoT】 产品设计:结构设计流程
  18. idea用JAVA连接mysqlAccess denied for user ‘root‘@‘localhost‘ (using password: YES)错误
  19. Anaconda Navigator Applications 缺少Notebook等应用
  20. node - opn库

热门文章

  1. 给25岁男人的忠告:有种责任感.
  2. Grpc+Grpc Gateway实践一 介绍与环境安装
  3. SQLite 使用(创、升、增、删、改、查)
  4. CentOS 6.5/6.6 安装mysql 5.7 最完整版教程
  5. WebClient 文件下载
  6. session过期跳转登录页面
  7. 【语法】NSString
  8. mysql go命令行_Go语言调用mysql.exe和mysqldump命令行导入导出数据库
  9. 【杂文】企业数字化转型展望—角色转型
  10. 【PP主数据】工作中心介绍