1

我使用 DG4ODBC 为 db2 创建了一个 Oracle 异构服务。

尝试使用 isql 登录并使用此查询进行选择

select *from workorder@maximo 

我得到一个结果集的所有数据

但是当我使用 sqlplus Oracle 登录时出现此错误

在此处输入图像描述

这是我的异构初始化

在此处输入图像描述

我尝试使用 HS_FDS_TRACE_LEVEL=DEBUG 并得到一些列sql_null_value

这是来自调试的日志示例:

在此处输入图像描述

如果任何列具有空值,则无法显示数据。

即使有空值,我如何显示数据?我正在使用 Oracle 12c 和 db2 10.5

4

2 回答 2

0

尝试使用:

HS_FDS_SQLLEN_INTERPRETATION = 32

(来自 Occacle 文档)此参数仅对 64 位平台有效。ODBC 标准指定 SQLLEN(内部 ODBC 构造)在 64 位平台上为 64 位,但一些 ODBC 驱动程序管理器和驱动程序违反了此约定,并将其实现为 32 位。为了让网关补偿它们的行为,如果您使用这些类型的驱动程序管理器和驱动程序,则需要指定 HS_FDS_SQLLEN_INTERPRETATION=32。

从您的问题中不清楚 Db2 odbc 客户端的位数,或者驱动程序管理器或驱动程序是在内部使用 32 位还是 64 位。更改此参数后,您可能需要重新初始化。Db2 的 CLI 跟踪(google for instructions)也可能暴露这一点。

于 2017-10-27T11:05:52.437 回答
0

当我尝试将 TEXT 数据类型从 Postgres 加载到 Oracle VARCHAR2(4000) 并且 TEXT 列中的源数据大于 4000 字节时,出现此错误。可用的解决方法之一是将 TEXT 列映射到 PL/SQL 的 VARCHAR2(32767) 变量或 LONG、CLOB 数据类型。

于 2019-02-20T15:37:37.100 回答