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

问题:用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 ALL
        
            INTO ainsertclob (id, blobtest) VALUES
            (#{item.id}, #{item.blobtest})
        
        select 1 from dual
    

//方式2:
    
        INSERT INTO ainsertclob (id, blobtest)
        
            SELECT #{item.id} ,#{item.blobtest} from dual
        
    

// 方式3:
  
    BEGIN  
     
        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} );  
      
    COMMIT;  
    END; 
   

 

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

 
        INSERT INTO ainsertclob (id, blobtest) VALUES
        
            (#{item.id}, #{item.blobtest})
        
 

 

 

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

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

 

  

 

你可能感兴趣的:(Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA-00933: SQL 命令未正确结束)