系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 数据库 > oracle > 详细页面

Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA-00933: SQL 命令未正确结束

时间:2020-08-19来源:www.pcxitongcheng.com作者:电脑系统城

问题:用mybaits 批量插入数据到Oracle 数据库的时候,

报错:ORA-00933: SQL 命令未正确结束 / ORA-00933: SQL command not properly ended ;意思就是 语法错误 

 

原因:

oracle 批量插入与mysql 的批量插入的方式是不同的,

insert into tablename()values(),(),(); ---这个是mysql 的批量插入形式

insert all into tablename() values() into tablename() values() -------这个是Oracle批量插入形式 

 

下面是 Mybaits:oracle数据库批量插入数据的样式:

复制代码
//方式1:
<insert id="insertclobtest2" parameterType="com.inspur.tax.sjaqgl.sjflfjgl.data.ClobEntity">
        INSERT ALL
        <foreach collection="list" item="item" index="index">
            INTO ainsertclob (id, blobtest) VALUES
            (#{item.id}, #{item.blobtest})
        </foreach>
        select 1 from dual
    </insert>

//方式2:
    <insert id="insertclobtest3" parameterType="com.inspur.tax.sjaqgl.sjflfjgl.data.ClobEntity">
        INSERT INTO ainsertclob (id, blobtest)
        <foreach collection="list" item="item" index="index" separator="union all">
            SELECT #{item.id} ,#{item.blobtest} from dual
        </foreach>
    </insert>

// 方式3:
<insert id="addBatch" parameterType="java.util.List">  
    BEGIN  
   <foreach collection="list" item="item" index="index" separator="">  
        insert into blacklist  
        (id, userid, deviceid, createdate, updatedate, "LEVEL")  
        VALUES  
        ( USER_INFO_SEQ.NEXTVAL,#{item.userId,jdbcType=INTEGER},#{item.deviceId,jdbcType=VARCHAR},  
        #{item.createDate,jdbcType=DATE},sysdate, #{item.level,jdbcType=INTEGER} );  
    </foreach>  
    COMMIT;  
    END; 
 </insert>  
复制代码

 

下面是Mybaits: mysql 数据库批量插入数据的例子:

 <insert id="insertclobtest1" parameterType="com.inspur.tax.sjaqgl.sjflfjgl.data.ClobEntity">
        INSERT INTO ainsertclob (id, blobtest) VALUES
        <foreach collection="list" item="item" separator=",">
            (#{item.id}, #{item.blobtest})
        </foreach>
 </insert>

 

 

Mybatis,oracle,ORA-00933: SQL 命令未正确结束

原因是:批量插入时,如果没有主键,一定要显式指定useGeneratedKeys为false,否则会报: SQL 命令未正确结束

 

<insert id="insert_" useGeneratedKeys="false">  </insert>

分享到:

相关信息

  • Oracle数据库的系统结构

    1.Oracle数据库系统结构概述 2.Oracle数据库存储结构 物理存储结构 控制文件 数据文件 重做日志文件 归档日志文件 Oracle数据库逻辑结构 数据块(Data Block) (盘)区(Extent) 段(Segment) 表空间(Tablespace) 本地管...

    2023-10-31

  • Oracle19c最新版保姆级别最详细的安装配置教程

    windows下的Oracle19c 一、官网下载Oracle19c数据库 二、安装Oracle数据库 1.解压安装包 2.运行setup.exe安装 三、配置 四、安装完Oracle数据库,给scott用户解锁 1.解决Oracle数据库中没有scott账户的问题 2.给scott...

    2023-10-31

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载