gpt4 book ai didi

java - 如何修复ORA-00911 : invalid character in Mybatis query

转载 作者:行者123 更新时间:2023-12-02 09:43:10 29 4
gpt4 key购买 nike

我是 mybatis 新手,遇到以下错误:

ORA-00911: invalid character

在 mybatis 中我执行这个查询:

<select id="queryWithProblem" 
parameterType="javaClass"
resultMap="javaMap">

SELECT DISTINCT TSV.SPLTSV_CDG_CARRIER_VUELO SPLTSV_CDG_CARRIER_VUELO,
TSV.SPLTSV_NMR_VUELO SPLTSV_NMR_VUELO,
TSV.SPLTSV_TMS_SALIDA_LOCAL SPLTSV_TMS_SALIDA_LOCAL,
TSV.SPLTSV_TMS_SALIDA_UTC SPLTSV_TMS_SALIDA_UTC,
TSV.SPLTSV_FCH_VUELO SPLTSV_FCH_VUELO
FROM SPLPSV PSV,
SPLTSV TSV
WHERE PSV.SPLSSV_SEQ_CDG = #{id, jdbcType=NUMERIC}
AND SPLPSV_FCH_INGRESO <![CDATA[ >= ]]> TRUNC(#{entranceDate,
jdbcType=DATE}, 'DD')
AND SPLPSV_FCH_INGRESO < TRUNC(#{entranceDate, jdbcType=DATE},
'DD') + 1
AND TRUNC(#{entranceDate, jdbcType=DATE}, 'DD') =
#{entranceDate, jdbcType=DATE}
AND TSV.SPLTSV_SEQ_CDG = PSV.SPLTSV_SEQ_CDG;

</select>

我尝试更改包装 where 子句的,但仍然遇到相同的错误。

<select id="queryWithProblem" 
parameterType="javaClass"
resultMap="javaMap">

SELECT DISTINCT TSV.SPLTSV_CDG_CARRIER_VUELO SPLTSV_CDG_CARRIER_VUELO,
TSV.SPLTSV_NMR_VUELO SPLTSV_NMR_VUELO,
TSV.SPLTSV_TMS_SALIDA_LOCAL SPLTSV_TMS_SALIDA_LOCAL,
TSV.SPLTSV_TMS_SALIDA_UTC SPLTSV_TMS_SALIDA_UTC,
TSV.SPLTSV_FCH_VUELO SPLTSV_FCH_VUELO
FROM SPLPSV PSV,
SPLTSV TSV
<![CDATA[
WHERE PSV.SPLSSV_SEQ_CDG = #{id, jdbcType=NUMERIC}
AND SPLPSV_FCH_INGRESO >= TRUNC(#{entranceDate, jdbcType=DATE}, 'DD')
AND SPLPSV_FCH_INGRESO < TRUNC(#{entranceDate, jdbcType=DATE}, 'DD') + 1
AND TRUNC(#{entranceDate, jdbcType=DATE}, 'DD') = #{entranceDate, jdbcType=DATE}
AND TSV.SPLTSV_SEQ_CDG = PSV.SPLTSV_SEQ_CDG;
]]>

</select>

当我直接在 Oracle 上运行此查询时,没有问题。

[编辑]

通过删除 ; 解决了问题在查询末尾。

最佳答案

描述当遇到ORA-00911错误时,会出现以下错误消息:

ORA-00911: 无效字符

原因您试图执行包含特殊字符的 SQL 语句。

分辨率解决此 Oracle 错误的选项是:

选项#1当您尝试在 SQL 语句中使用特殊字符时,会出现此错误。如果列名或表名中使用除$、_、#之外的特殊字符,则该名称必须用双引号引起来。

选项#2如果您将 SQL 从另一个程序粘贴到编辑器中,则可能会出现此错误。有时可能会出现不可打印的字符。在这种情况下,您应该尝试重新输入 SQL 语句,然后重新执行它。

选项#3当 SQL WHERE 子句中使用特殊字符并且该值未用单引号括起来时,会出现此错误。

例如,如果您有以下 SQL 语句:

SELECT * FROM suppliers
WHERE supplier_name = ?;

您将收到以下错误消息:

Oracle PLSQL

您可以通过包含 ? 来更正此错误。单引号如下:

SELECT * FROM suppliers
WHERE supplier_name = '?';

关于java - 如何修复ORA-00911 : invalid character in Mybatis query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56889375/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com