首页 > 解决方案 > Mybatis ORA-00911: 无效字符

问题描述

错误消息如下所示。

错误可能存在于mappers/admin-mapper.xml
错误可能涉及defaultParameterMap
设置参数时出错
原因:java.sql.SQLSyntaxErrorException: ORA-00911: invalid character; 糟糕的 SQL 语法 []; 嵌套异常是 java.sql.SQLSyntaxErrorException: ORA-00911: invalid character ],根本原因是 java.sql.SQLSyntaxErrorException: ORA-00911: invalid character

    <select id="selectCouponByDate" parameterType="String" resultType="Coupon">
    CREATE OR REPLACE VIEW CPN_EXPIRED
    AS SELECT COUNT(COUPON_NAME) AS EXPIRED, COUPON_NAME
         FROM COUPON
        WHERE EXPDATE <![CDATA[<]]> SYSDATE
          AND ISUSED = 'N'
     GROUP BY COUPON_NAME;

    CREATE OR REPLACE VIEW CPN_USED
    AS SELECT COUNT(COUPON_NAME) AS USED, COUPON_NAME
         FROM COUPON
        WHERE ISUSED = 'Y'
     GROUP BY COUPON_NAME;
     
       SELECT C.COUPON_NAME
            , ISSUEDBY
            , LIMIT
            , COUNT(C.COUPON_NAME) AS ISSUED, EXPIRED, USED
         FROM COUPON C
    LEFT JOIN CPN_EXPIRED V1 ON(C.COUPON_NAME = V1.COUPON_NAME)
    LEFT JOIN CPN_USED V2 ON(C.COUPON_NAME = V2.COUPON_NAME)
    <choose>
        <when test="date == day">WHERE TO_DATE(SYSDATE,'yy-mm-dd') - TO_DATE(ISSUEDATE, 'yy-mm-dd') = 0</when>
        <when test="date == week">WHERE ISSUEDATE <![CDATA[>=]]> TRUNC(SYSDATE, 'IW')
                                  AND ISSUEDATE <![CDATA[<]]> TRUNC(SYSDATE, 'IW') + 7</when>
        <otherwise>WHERE ISSUEDATE <![CDATA[>=]]> TRUNC(SYSDATE, 'MM')
                   AND ISSUEDATE <![CDATA[<]]> LAST_DAY(SYSDATE)</otherwise>
    </choose>
     GROUP BY C.COUPON_NAME, ISSUEDBY, LIMIT, EXPIRED, USED;
</select>

我找不到任何错字。

标签: javaoraclemybatis

解决方案


推荐阅读