【问题标题】:Why can't I use a CTE in my select statement?为什么我不能在我的选择语句中使用 CTE?
【发布时间】:2016-03-21 22:25:34
【问题描述】:

我有一个运行数据库查询的 Mule 应用程序,它运行得非常好(虽然有点慢)。详情如下:

  • 骡 3.7.2 EE
  • Anypoint Studio 5.4.1
  • jdk1.7.0_51
  • 使用oracleojdbc6驱动

现在,当我使用 ojdbc6 驱动程序创建 database 连接时,不使用公用表表达式 (CTE),查询运行良好(2.5 秒)。

当我使用我的 CTE 时,查询失败并出现错误:

org.mule.api.MessagingException:查询类型必须是“[SELECT, STORE_PROCEDURE_CALL]”之一,但为“DDL”(java.lang.IllegalArgumentException)。消息负载的类型:NullPayload

很明显,Mule EE 服务器在某些时候认为我正在尝试执行 DDL,而我并没有。

使用 CTE 的新查询在 SQL Developer 中运行良好(0.250 秒),所以我知道这不是我的查询。

为什么我不能在 Mule 中使用 CTE (WITH) 语句?

这是一个已知问题吗?我是不是做错了什么?


在 CTE 之前查询(简化):
SELECT '1' AS COLUMN_ONE, 'X' AS COLUMN_X
FROM DUAL

CTE 之后的查询(简化):

WITH TBL AS
(
    SELECT '1' AS COLUMN_ONE, 'X' AS COLUMN_X
    FROM DUAL
)
SELECT * FROM TBL

【问题讨论】:

    标签: mule common-table-expression ojdbc


    【解决方案1】:

    截至 2016 年 4 月 27 日,Mule 不支持 CTE 声明

    我必须深入挖掘这个。

    【讨论】:

      【解决方案2】:

      现在您可以像在

      中那样编写替代选择语句来解决此问题

      Sql - alternative to WITH ... AS

      Mule不支持CTE是没有意义的,也是很不幸的

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-20
        • 2015-04-22
        • 2020-12-28
        相关资源
        最近更新 更多