为什么我不能在select语句中使用CTE?

时间:2016-03-21 22:25:35

标签: mule common-table-expression ojdbc

我有一个运行数据库查询的Mule应用程序运行得非常好(虽然有点慢)。它的详细信息是:

  • Mule 3.7.2 EE
  • Anypoint Studio 5.4.1
  • jdk1.7.0_51
  • 使用oracle ojdbc6驱动程序

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

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

  

org.mule.api.MessagingException:查询类型必须是'[SELECT,STORE_PROCEDURE_CALL]'之一,但是'DDL'(java.lang.IllegalArgumentException)。消息有效内容的类型为:NullPayload

显然,在某些时候,Mule EE服务器认为我正在尝试执行DDL而不是。

使用CTE的新查询在SQL Developer中运行得非常好(在.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

2 个答案:

答案 0 :(得分:1)

截至2016-04-27,骡子不支持 CTE声明。

我不得不深入挖掘这个。

答案 1 :(得分:0)

现在您可以在

中解决此写作替代选择语句的问题

Sql - alternative to WITH ... AS

没有意义,而且Mule不支持CTE非常不吉利