`
312350968
  • 浏览: 209046 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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文件代码如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.mypro.employee.dao.ImportMapper" >

	<select  id="dropTable" parameterType="Map" statementType="CALLABLE">
		<![CDATA[  
    		{call PROC_DROPIFEXISTS (#{tableName,jdbcType=VARCHAR})}  
		]]>  
	</select >
	<update id="createTable" parameterType="Map">
		 <![CDATA[
  			create table ${tableName} (id integer,name varchar(20))
  		]]>
	</update>
</mapper>

 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<String, Object> map) {
		importMapper.dropTable((String)map.get("tableName"));// 调用存储过程删除表,有就删除,没有不做操作
		importMapper.createTable(map); //动态建表
	}
}

 

分享到:
评论

相关推荐

    Java操作Oracle数据库(建表,插数据,删除)

    Java操作Oracle数据库(建表,插数据,删除)

    Oracle新建用户、角色,授权,建表空间的sql语句

    oracle数据库的权限系统...例如delete权限允许用户删除表或视图的行,select权限允许用户通过select从表、视图、序列(sequences)或快照(snapshots)中查询信息。 每个oracle用户都有一个名字和口令,并拥有一些由其创建的

    ORACLE下SCOTT用户中所有表的建表语句和数据

    如果用的是oracleXE可能没有SCOTT用户,可以按照https://www.cnblogs.com/zhuzhixijiang/p/5192354.html 此微博,建立数据文件、表...可以将DROP TABLE语句删除。前面提到的微博中使用的工具是navicat,推荐大家使用。

    Java代码生成Oracle版

    使用springboot方式自动生成控制、业务层、dao、mapper,提供新增,修改,删除,分页查询功能

    自动创建数据库工具

    自动创建数据库工具。 可以自动 创建表空间 创建表 删除数据库 插入基础数据 亦可以用来检测sql语句错误。

    批量创建表

    用存储过程通过两张字典表批量创建表(先删除后创建),内含,存储过程代码和两张表的结构和信息

    数据库建表增加或删除字段

    表T2 删掉 C2字段 alter table T2 drop column C2; 表T1 增加 g字段,类型为number(10) alter table t1 add g number(10);

    Oracle PL/SQL语言初级教程

    PL/SQL是Oracle对标准数据库语言的扩展,Oracle公司已经将PL/SQL整合到Oracle 服务器和...通过本教程的学习,您将初步掌握PL/SQL语言,能够利用PL/SQL语言完成建表、查询、添加、删除数据以及事务处理语句的基本用法。

    oracle常用操作

    oracle日常操作,包含了建表语句、表空间创建、扩展、删除,oracle日常问题总结等内容

    韩顺平oracle学习笔记

    2、开始,,程序,,Oracle - oracle的版本号,我的是10ghome,,Oracle Installation Products,, Universal Installer 卸载oracle 3、进注册表,regedit,删除选择 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE下所有的key。HKEY_...

    导出创建用户下各个对象数据结构的sql语句的脚本,包括表、视图、索引、约束等等

    每个存储过程有多个参数,可以控制输出何种形式的内容,如可以只生成删除表的sql,可以在生成的创建表与索引的语句上加上storage子句等等。 &lt;br/&gt;运行 user_dll_sql.sql的准备工作: &lt;br/&gt;1. ...

    赤兔Oracle数据库恢复软件 v11.6.zip

    以纯文本导出时,能够自动生成建表的SQL语句和SQL*Loader导入所需的control文件 30.支持DESC表,以显示表的列定义支持列出表的分区和子分区 31.支持对误删除数据的恢复,即使被删除数据的表中有LOB列,即使被删除...

    Oracle自学(学习)材料 (共18章 偏理论一点)

    1 Oracle 结构组件 目标 1-2 基本结构概述 1-3 Oracle 服务器 1-4 Oracle 实例 1-5 建立连接和创建会话 1-6 Oracle 数据库 1-7 物理结构 1-8 内存结构 1-9 系统全局区(SGA) 1-10 共享池 1-12 库缓存 1-13 数据字典...

    oracle教案(doc)+SQL Reference 10g(chm).rar

    oracle教案(doc) 1. oracle安装及基本命令 1 1.1 oracle简介 1 1.2 oracle安装 1 1.2.1 常见版本 1 1.2.2 安装: 2 1.2.3 oracle必须启动的服务 2 1.3 oracle常见的第三方工具 4 2. SQL/PLUS 5 2.1 命令行方式 5 2.2 ...

    删除oracle数据库并重建脚本

    @echo off @echo 设置好以下信息,然后双击运行 ...@echo db:数据库连接地址,格式:ip地址/orcl @echo sysdba:是否为sysdba,格式:y或者1 @echo 导数据库所需信息: set user=cwy1030 set password=1 ...

    Myeclipse Oracle9i hibernate3.2 Spring2.5 Struts2简单示例

    自己做的一个Myeclipse Oracle9i hibernate3.2 Spring2.5 Struts2, 包删除了, 自己在myeclipse里添加就行了, 已经调试成功. 建表语句: create table CUSTOMER ( ID INTEGER not null, USERNAME VARCHAR2(12), ...

    PRM-DUL Oracle(数据库恢复工具) v4.1.zip

    》》以纯文本导出时,能够自动生成建表的SQL语句和SQL*Loader导入所需的control文件 PRM-DUL Oracle(数据库恢复工具) v4.1更新日志 1. 对使用DELETE命令误删除的数据的救援恢复支持 2. 对在字典模式下LOB数据Data...

    Oracle10g学习笔记整理

    Oracle10g学习笔记整理:登录oracle、常用命令、SQL语言包含4个部分、创建表空间、创建/修改/删除用户、权限与角色的操作、建表语句、表的修改、约束、DML(查询SELECT、插入INSERT、修改UPDATE和删除DELETE数据)、...

    Oracle 10g 开发与管理

    本文是由笔者2012年学习oracle数据库时编写的学习札记,其中的题目 多数为老师留下的思考题目。 我相信本文会对初学者使用oracle有一个初步的使用印象。右图为我所参 考的书籍。 目录 第一讲 Oacle关系数据库 ...

Global site tag (gtag.js) - Google Analytics