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 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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM