我正在尝试执行一个由绑定变量组成的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开发人员。
答案 0 :(得分:1)
在连接到远程Db2-for-Z / OS数据库的同时,您正在Microsoft Windows上使用交互式CLP for Db2。
此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连接网关服务器进行连接(在这种情况下,在运行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用于编程问题。