如何在 DB2 DB2 ZOS 中执行基于 sql 的绑定变量

How to execute bind variable based sql in DB2 DB2 ZOS

我正在尝试执行一个 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 developer.

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

此 CLP 界面没有任何提示输入 dynamic-SQL 中的 host-variable 值的功能。这就是您收到错误消息的原因。

您可以使用替代界面(例如 IBM Data Studio,或许多其他基于 java 的数据库 front-end 工具),或继续使用 Oracle-SQL-Developer 访问 Db2 Z/OS.

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

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

配置 SQL-Developer 以访问 Db2 已被广泛记录,包括 this website, and also by Oracle。所以做你的研究,这不是编程而是配置。 Whosebug 用于编程问题。