2017-09-29 43 views
0

私のプロジェクトは、私がデータ を節約するためにバッチ挿入文法を使用して、私はOracleデータベースMyBatisのバッチ挿入例外:ORA-00933:SQLコマンドが正常に

<sql id="site_columns"> 
 
    ID, SITE_URL, BRM_HGSSITE_ID, BRM_SITE_STATUS, BPS_HGSSITE_ID, SITE_STATUS, OP_HGSSITE_ID, BILLING_PLATFORM, BLIS_EFFECTIVE_FROM, 
 
    BLIS_EFFECTIVE_TO, BRM_EFFECTIVE_FROM, ISSUE_TYPE, COMMENTS, CSM_FIRST_NAME, CSM_LAST_NAME, CSM_EMAIL, CREATE_TIME 
 
</sql>

を使用し、SpringbootとMyBatisのを使用していますが終了していません

<insert id="batchSaveVerifiedSitesFromFile" parameterType="siteSummaryInfoBean"> 
 
    INSERT INTO MR_VERIFIED_SITE_LIST(<include refid="site_columns"/>) VALUES 
 
    <foreach collection="list" item="site" separator=","> 
 
     (MR_VERIFIED_SITE_LIST_SEQ.nextval, #{site.webexurl}, #{site.brm_hgssiteid}, #{site.brm_sitestatus}, 
 
     #{site.bps_hgssiteid}, #{site.sitestatus}, 
 
     #{site.op_hgssiteid}, #{site.billingplatform,jdbcType=VARCHAR}, #{site.blis_effectiveFrom,jdbcType=DATE}, 
 
     #{site.blis_effectiveTo,jdbcType=DATE}, #{site.brm_effectiveFrom,jdbcType=DATE}, 
 
     #{site.issueType,jdbcType=VARCHAR}, #{site.comments,jdbcType=VARCHAR}, 
 
     #{site.csmfirstname,jdbcType=VARCHAR}, #{site.csmlastname,jdbcType=VARCHAR}, 
 
     #{site.csmemail,jdbcType=VARCHAR}, 
 
     greatest(nvl(#{site.blis_effectiveTo,jdbcType=DATE},sysdate), 
 
     nvl(#{site.brm_effectiveFrom,jdbcType=DATE},sysdate))) 
 
    </foreach> 
 
</insert>

+2

何が問題なのですか? – GGO

+0

Oracle Databaseに関連するエラーです。実行した問合せを提供してください。 – SAZ

答えて

0

Oracleでは、複数行の挿入文はサポートされません。

insert into ... select ... union all select ...の文as seen in a different answerを書くことができます。

このように、foreachループでは、セパレータはunion allになり、ループ本体はselect ... from dualになります。

0

insertステートメントはforeach内にある必要があります。

たとえば、コード自体の各ループで$ sql変数を上書きします。

関連する問題