java - 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>
我找不到任何错字。
解决方案
推荐阅读
- python - 使用 python 正则表达式替换 HTML Snippet 中的块
- python - 带有 CV2 库的 Python 机器人脚本
- react-native - React Native 重新加载应用或刷新 Drawer.Navigator
- excel - 将表格从word文件导入excel文件
- sql - 从 SQL 数据库中选择除重复项之外的所有内容
- javascript - JS通过字符串访问孙子属性
- python - 如何在 OpenCV 中的图像上临时显示文本?
- r - 将最大值添加到R中的模拟
- bash - bash 的别名不起作用(使用 bash 并在重新启动时编辑了 bash_profile)
- ruby-on-rails - Rails - 注入方法名称和会话