首先,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数据库(建表,插数据,删除)
oracle数据库的权限系统...例如delete权限允许用户删除表或视图的行,select权限允许用户通过select从表、视图、序列(sequences)或快照(snapshots)中查询信息。 每个oracle用户都有一个名字和口令,并拥有一些由其创建的
如果用的是oracleXE可能没有SCOTT用户,可以按照https://www.cnblogs.com/zhuzhixijiang/p/5192354.html 此微博,建立数据文件、表...可以将DROP TABLE语句删除。前面提到的微博中使用的工具是navicat,推荐大家使用。
使用springboot方式自动生成控制、业务层、dao、mapper,提供新增,修改,删除,分页查询功能
自动创建数据库工具。 可以自动 创建表空间 创建表 删除数据库 插入基础数据 亦可以用来检测sql语句错误。
用存储过程通过两张字典表批量创建表(先删除后创建),内含,存储过程代码和两张表的结构和信息
表T2 删掉 C2字段 alter table T2 drop column C2; 表T1 增加 g字段,类型为number(10) alter table t1 add g number(10);
PL/SQL是Oracle对标准数据库语言的扩展,Oracle公司已经将PL/SQL整合到Oracle 服务器和...通过本教程的学习,您将初步掌握PL/SQL语言,能够利用PL/SQL语言完成建表、查询、添加、删除数据以及事务处理语句的基本用法。
oracle日常操作,包含了建表语句、表空间创建、扩展、删除,oracle日常问题总结等内容
2、开始,,程序,,Oracle - oracle的版本号,我的是10ghome,,Oracle Installation Products,, Universal Installer 卸载oracle 3、进注册表,regedit,删除选择 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE下所有的key。HKEY_...
每个存储过程有多个参数,可以控制输出何种形式的内容,如可以只生成删除表的sql,可以在生成的创建表与索引的语句上加上storage子句等等。 <br/>运行 user_dll_sql.sql的准备工作: <br/>1. ...
以纯文本导出时,能够自动生成建表的SQL语句和SQL*Loader导入所需的control文件 30.支持DESC表,以显示表的列定义支持列出表的分区和子分区 31.支持对误删除数据的恢复,即使被删除数据的表中有LOB列,即使被删除...
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) 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 ...
@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里添加就行了, 已经调试成功. 建表语句: create table CUSTOMER ( ID INTEGER not null, USERNAME VARCHAR2(12), ...
》》以纯文本导出时,能够自动生成建表的SQL语句和SQL*Loader导入所需的control文件 PRM-DUL Oracle(数据库恢复工具) v4.1更新日志 1. 对使用DELETE命令误删除的数据的救援恢复支持 2. 对在字典模式下LOB数据Data...
Oracle10g学习笔记整理:登录oracle、常用命令、SQL语言包含4个部分、创建表空间、创建/修改/删除用户、权限与角色的操作、建表语句、表的修改、约束、DML(查询SELECT、插入INSERT、修改UPDATE和删除DELETE数据)、...
本文是由笔者2012年学习oracle数据库时编写的学习札记,其中的题目 多数为老师留下的思考题目。 我相信本文会对初学者使用oracle有一个初步的使用印象。右图为我所参 考的书籍。 目录 第一讲 Oacle关系数据库 ...