开发者社区> 问答> 正文

oracle数据库不支持对union关键字的解析

statFilter在进行SQL合并时报以下错误,似乎是Druid没有添加对于union关键字的解析。请问这是出于什么原因?后续会不会修复?谢谢~

com.alibaba.druid.filter.stat.StatFilter [pool-23-thread-1] ERROR com.alibaba.druid.filter.stat.StatFilter com.alibaba.druid.filter.stat.StatFilter.mergeSql(StatFilter.java:147) - merge sql error, dbType oracle, sql :

insert into TB_DUOBAO_PARTICIPATE_NUMBER ( PARTICIPATE_NUMBER, PERIOD_ID, PRODUCT_ID,number_index)

     (SELECT ?,?,?,?  FROM DUAL)
   union all 
       (SELECT ?,?,?,?  FROM DUAL)
   union all 
       (SELECT ?,?,?,?  FROM DUAL)
   union all 
       (SELECT ?,?,?,?  FROM DUAL)
   union all 
       (SELECT ?,?,?,?  FROM DUAL)
   union all 
       (SELECT ?,?,?,?  FROM DUAL)

com.alibaba.druid.sql.parser.ParserException: TODO : UNION union at com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser.parseStatementList(OracleStatementParser.java:489) at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:145) at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:140) at com.alibaba.druid.sql.visitor.ParameterizedOutputVisitorUtils.parameterize(ParameterizedOutputVisitorUtils.java:53) at com.alibaba.druid.filter.stat.StatFilter.mergeSql(StatFilter.java:145) at com.alibaba.druid.filter.stat.StatFilter.createSqlStat(StatFilter.java:630) at com.alibaba.druid.filter.stat.StatFilter.statementPrepareAfter(StatFilter.java:305) at com.alibaba.druid.filter.FilterEventAdapter.connection_prepareStatement(FilterEventAdapter.java:124) at com.alibaba.druid.filter.FilterChainImpl.connection_prepareStatement(FilterChainImpl.java:448) at com.alibaba.druid.filter.FilterAdapter.connection_prepareStatement(FilterAdapter.java:928) at com.alibaba.druid.filter.FilterEventAdapter.connection_prepareStatement(FilterEventAdapter.java:122) at com.alibaba.druid.filter.FilterChainImpl.connection_prepareStatement(FilterChainImpl.java:448) at com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl.prepareStatement(ConnectionProxyImpl.java:342) at com.alibaba.druid.pool.DruidPooledConnection.prepareStatement(DruidPooledConnection.java:331) at org.apache.ibatis.executor.statement.PreparedStatementHandler.instantiateStatement(PreparedStatementHandler.java:79) at org.apache.ibatis.executor.statement.BaseStatementHandler.prepare(BaseStatementHandler.java:88) at org.apache.ibatis.executor.statement.RoutingStatementHandler.prepare(RoutingStatementHandler.java:58) at sun.reflect.GeneratedMethodAccessor89.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) ...

原提问者GitHub用户kajelas

展开
收起
山海行 2023-07-05 21:41:10 83 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    Oracle数据库是支持UNION关键字的,可以用来实现多个SELECT语句的结果集合并。如果在使用UNION时遇到解析错误,可能有以下几个原因:

    SQL语法错误
    使用UNION时,需要确保SQL语法正确。例如,SELECT语句中的列名、表名、WHERE条件等应该正确,语法不正确会导致解析错误。可以检查SQL语法并修正错误。

    UNION语句的两个SELECT查询的列数不相同
    使用UNION时,需要确保UNION语句的两个SELECT查询的列数相同。如果列数不相同,会导致解析错误。可以检查两个SELECT查询的列数是否相同,并修改列名或添加列来确保列数相同。

    UNION语句的两个SELECT查询的列类型不匹配
    使用UNION时,需要确保UNION语句的两个SELECT查询的列类型匹配。如果列类型不匹配,会导致解析错误。可以检查两个SELECT查询的列类型是否匹配,并使用CAST函数将列类型转换为匹配的类型。

    UNION语句的两个SELECT查询的列名不相同
    使用UNION时,需要确保UNION语句的两个SELECT查询的列名相同。如果列名不相同,会导致解析错误。可以检查两个SELECT查询的列名是否相同,并使用AS关键字将列名重命名为相同的名称。

    2023-07-30 09:39:30
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    根据错误信息,看起来Druid的Oracle解析器未添加对于UNION关键字的解析支持。通常情况下,数据库管理系统的解析器会根据数据库的特定语法规则来解析SQL语句,但有时候可能会存在某些语法特性的缺失或限制。

    关于为什么Druid没有添加对于UNION关键字的解析的具体原因,我无法提供准确的答案。这可能是Druid团队的设计决策,或者是一个尚未实现的功能。

    至于后续是否会修复这个问题,这需要联系Druid开发团队或查看Druid的官方文档或社区支持来获取准确的答案。开发团队可能会修复这个问题,并在未来的版本中添加对UNION关键字的解析支持。

    建议你可以前往Druid的官方网站或社区论坛进行咨询,以获取更详细和准确的信息。他们可能会提供有关修复进程、预计修复时间以及临时解决方案的指导。

    2023-07-11 17:02:46
    赞同 展开评论 打赏
  • 问题已修复,请用新版本 https://github.com/alibaba/druid/releases/tag/1.1.14

    原回答者GitHub用户wenshao

    2023-07-06 12:22:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
神龙云服务器产品及技术深度解析 立即下载
弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载

相关镜像