【问题标题】:How to execute bind variable based sql in DB2 DB2 ZOS如何在 DB2 DB2 ZOS 中执行基于绑定变量的 sql
【发布时间】:2019-05-28 09:54:26
【问题描述】:

我正在尝试执行一个由绑定变量组成的 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。

【问题讨论】:

  • 你指的是哪个“命令行”?如果您在 Windows、Linux 或 Unix 上使用 shell 命令行(同时连接到 z/os 上的远程数据库),那么它不提供参数标记提示。如果正确配置和许可,Oracle-SQL-Developer 应该能够与远程 Db2-for-Z/O 一起使用。
  • 是的,目前我正在使用 Window cmd 提示符。所以你的建议是使用 Oracle-SQL-Develper 连接 DB2?如果有任何参考文档来设置 Oracle SQL 和 Db2 之间的连接,请提供给我

标签: oracle db2 db2-zos


【解决方案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/ 配合使用的免费 IBM Data Studio OS、Db2-for-i 和 Db2 for LUW。

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

【讨论】:

  • 是的。它对我有用 80%。现在我可以在 Oracle SQL developer 中看到 DB2 配置窗口。但我坚持建立连接,给出以下错误。执行请求的操作时遇到错误:[jcc][t4][2057][11264][3.72.24] 应用程序服务器拒绝建立连接。试图访问数据库“DBNAME”,但未找到或不支持事务。 ERRORCODE=-4499, SQLSTATE=08004 供应商代码-4499
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-20
  • 1970-01-01
相关资源
最近更新 更多