0

我正在尝试执行一个由绑定变量组成的 SQL。它在 ORACLE DB 上运行良好,但在 DB2 上运行良好

这是示例 SQL:(UPPER/UCASE 可以是任何东西)

SELECT Col1 FROM tab1 WHERE Col1 = 'abc' AND (UPPER(Col1) LIKE (UPPER(:1) || '%' ESCAPE '\') ORDER BY 1

错误如下:

db2 => SELECT Col1 FROM tab1 WHERE Col1 = 'abc' AND (UPPER(Col1) LIKE (UPPE
R(:1) || '%' ESCAPE '\') ORDER BY 1
SQL0104N  An unexpected token "1" was found following "".  Expected tokens mayinclude:  "<IDENTIFIER>".  SQLSTATE=42601

我不确定,这里有什么问题。它不提示输入绑定值。在 Oracle DB 中,一切正常。

在 DB2 中,我使用命令行来执行查询。对于 Oracle,我使用了 ORACLE SQL 开发人员。

4

1 回答 1

1

您在 Microsoft Windows 上使用交互式 CLP for Db2,同时连接到远程 Db2-for-Z/OS 数据库。

此 CLP 接口没有任何提示动态 SQL 中的主机变量值的功能。这就是您收到错误消息的原因。

您可以使用替代接口(例如 IBM Data Studio 或许多其他基于 Java 的数据库前端工具),或者继续使用 Oracle-SQL-Developer 来访问 Db2 for Z/OS。

您可以将“Oracle SQL Developer”配置为使用 Db2 type-4 jdbc 驱动程序 (db2jcc4.jar) 以及 Db2 for Z/OS 的许可证文件 (“db2jcc_license_cisuz.jar”)。您将需要从大型机 DBA 或 Passport-Advantage 获取 Db2 许可证文件,或者通过 Db2-connect 网关服务器进行连接(在这种情况下,您不需要在运行 Oracle-SQL 的工作站上单独的许可证文件-开发商)。

但是,每个此类工具对 Db2-for-Z/OS 的理解程度各不相同,因此,如果您遇到无法轻松解决的问题,请改用与 Db2-for-Z/OS 一起使用的免费 IBM Data Studio,以及Db2-for-i 和 Db2 for LUW。

配置 SQL-Developer 以访问 Db2 已被广泛记录,包括在网站上,也由Oracle提供。所以做你的研究,这不是编程而是配置。Stackoverflow 用于编程问题。

于 2019-05-29T11:08:05.933 回答