Oracle CTE 在一台计算机上失败

Oracle CTE failing in one computer

我在 Excel 中使用 VBA.

在 Microsoft Query 中创建了 运行 的查询

他们在不同的计算机上工作,但有一台计算机不工作。

在那台计算机上,查询仍然有效,但使用 CTE 的查询除外。

像下面这样的正常查询:

SELECT
  TBL.COL
FROM
  DB.TBL TBL;

但是当它有一个像下面这样的子查询(CTE)时:

WITH
  SUBQUERY AS (
    SELECT
      TBL.COL
    FROM
      DB.TBL TBL
  )
SELECT
  SUBQUERY.COL
FROM
  SUBQUERY;

它 运行 但没有检索到任何数据。

它甚至不显示列名称,如果它有效但返回了 0 条记录。

查询显示警告信息:

SQL Query can't be represented graphically. Continue anyway?

这是正常的,在任何计算机上都显示,但在:

之后还会显示另一条警告消息

SQL statement executed successfully.

只有当它不起作用时才会出现在该计算机中。

我需要能够将它们用于我所做的查询。

使用临时表也许可行,但我没有尝试所需的权限。

我尝试使用 inline views,但他们复制了数据。

I have queries created in Microsoft Query to run in Excel with VBA. ... but there's one computer where it doesn't work.

常用 table 表达式(即 WITH 子句)直到数据库的第 9 版才引入。由于涉及 ODBC (Microsoft Query),导致您的情况的最可能原因是无法工作的计算机安装了过时(预发布 9)版本的 Oracle 客户端。

比较一台正常工作的客户端计算机和一台不工作的客户端计算机之间的 Oracle 客户端安装,看看情况是否如此。如果是,请在有问题的机器上升级 Oracle 客户端。

我想你可以使用...

SELECT
  SUBQUERY.COL
FROM
  (
    SELECT
      TBL.COL AS COL --or (TBL.COL COL) or ( COL ) #if not duplicate with any
    FROM
      DB.TBL TBL
  ) SUBQUERY;