一台计算机上的Oracle CTE失败

时间:2019-07-24 11:21:04

标签: sql oracle oracle11g common-table-expression ms-query

我在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语句成功执行。

仅在计算机不工作时才会出现在计算机中。

我需要能够使用它们进行查询。

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

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

2 个答案:

答案 0 :(得分:1)

  
    

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

  

直到数据库的版本9才引入公用表表达式(即WITH子句)。由于涉及到ODBC(Microsoft Query),因此出现这种情况的最可能的原因是,无法运行的计算机已安装了过期(预发行版9)的Oracle Client版本。

比较工作的客户端计算机与不工作的客户端计算机之间的Oracle客户端安装,以了解是否是这种情况。如果是这样,请在有问题的计算机上升级Oracle Client。

答案 1 :(得分:0)

我认为您可以使用...

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;
相关问题