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); //動態建表
}
}
總結
以上是生活随笔為你收集整理的oracle先删后建,oracle 建表之前先删除语句的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: win7完整卸载oracle11,win
- 下一篇: oracle基于dblink创建视图,【
