"Unsupported type" 在 Oracle OleDB 中使用 UNION ALL SQL 语句时出现警告

"Unsupported type" warning when using UNION ALL SQL statement with Oracle OleDB

我遇到了这个 st运行ge 错误,我无法解释...

我有一个软件在过去几年中一直使用 ODBC 作为主要连接器。现在该软件也允许使用 OleDB,出于几个原因我更喜欢它。 现在有趣的是:
与 Oracle ODBC 驱动程序完美配合的 SQL 查询 与 Oracle OleDB 驱动程序配合使用。
首先,我必须使用 CAST AS 转换每个数值,但这是我已经抛在脑后的简单部分。因此,当单独 运行 时,查询现在可以正常工作了。但是,一旦我对这些查询执行 "UNION ALL",我就会从软件中收到 "unsupported type" 警告——就好像我忘记了 CAST 数值一样。 遗憾的是,我没有从软件中获得更多调试信息,但我的猜测是 SQL 语句必须以某种方式更改为 Oracle OleDB 驱动程序。

这里是查询:

SELECT
  string1 AS Name1
  string2 AS Name2
  CAST (int1 AS INT) AS Year
  CAST (int2 AS INT) AS Period
FROM
  database1
WHERE
  int1 = 2017 AND int2 = 1

UNION ALL

SELECT
  string1 AS Name1
  string2 AS Name2
  CAST (int1 AS INT) AS Year
  CAST (int2 AS INT) AS Period
FROM
  database2
WHERE
  int1 = 2017 AND int2 = 1

有没有人运行遇到过这样的问题?

YEAR 是 OleDb 中的保留字。尝试使用“[Year]”而不是 "Year" 或将其命名为其他名称(如果可能)。

SELECT
  string1 AS Name1,
  string2 AS Name2,
  CAST (int1 AS INT) AS [Year],
  CAST (int2 AS INT) AS Period
FROM
  database1
WHERE
  int1 = 2017 AND int2 = 1

UNION ALL

SELECT
  string1 AS Name1,
  string2 AS Name2,
  CAST (int1 AS INT) AS [Year],
  CAST (int2 AS INT) AS Period
FROM
  database2
WHERE
  int1 = 2017 AND int2 = 1

事实证明我的查询没有任何问题 - 它看起来像是软件中的错误,因为完全相同的查询在 Excel(使用相同的 OleDB 提供程序等)中工作得很好(即使没有 CAST) .).好吧,尝试另一个程序可能会节省我很多时间。

无论如何,我要感谢你们所有人对我的帮助!