oracle先删后建,oracle 建表之前先删除语句

首先,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); //动态建表

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值