首页 > 解决方案 > Oracle CTE 在一台计算机上失败

问题描述

我在 Microsoft Query 中创建了要在 Excel 中使用 VBA 运行的查询。

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

在该计算机中,除了使用 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 查询无法以图形方式表示。还是继续?

这是正常的并在任何计算机上显示,但在之后还会显示另一条警告消息:

SQL 语句执行成功。

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

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

使用临时表可能会起作用,但我没有尝试所需的权限。

我尝试使用内联视图,但它们复制了数据。

标签: sqloracleoracle11gcommon-table-expressionms-query

解决方案


我在 Microsoft Query 中创建了要在 Excel 中使用 VBA 运行的查询。...但是有一台计算机无法正常工作。

WITH直到数据库第 9 版才引入公用表表达式(即子句)。由于涉及 ODBC(Microsoft Query),因此您遇到这种情况的最可能原因是无法运行的计算机安装了 Oracle 客户端的过时(9 版之前)版本。

比较一台可以工作的客户端计算机和一台不能工作的客户端计算机之间的 Oracle 客户端安装,以确定是否是这种情况。如果是,请在有问题的机器上升级 Oracle 客户端。


推荐阅读