在 DB2 窗口上使用 JDBC 运行多语句查询
Posted
技术标签:
【中文标题】在 DB2 窗口上使用 JDBC 运行多语句查询【英文标题】:Running multi-statement query using JDBC on DB2 windows 【发布时间】:2016-07-28 10:05:47 【问题描述】:我正在尝试在 DB2 10.1 Windows 上使用 JDBC 运行多语句查询,但它失败并出现语法错误。以下是查询-
SELECT * FROM schemaname.tablename;
线程“main”com.ibm.db2.jcc.am.SqlSyntaxErrorException 中的异常:在“”之后发现了意外的标记“”。预期的标记可能包括:“schemaname.tablename”.. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.13.127
我知道这是由于数据库无法理解的查询末尾的分号造成的。如何将查询分隔符设置为分号,以便通过它。
【问题讨论】:
你说的这个“多语句查询”是什么?您是否可以显示一些导致错误的代码? 基本上是 SELECT * FROM schemaname.tablename1;SELECT * FROM schemaname.tablename2;用分号分隔的两个查询。但是,我的要求并不完全如此。我需要运行一个以分号结尾的查询,因为它们是以这种方式编码的,并且在 DB2 for z/OS 上运行良好,我需要在 DB2 for Windows 上运行同样的。我没有更改查询的选项。 这些都不可能。一次只能发出一条语句,除非使用compound statement,并且它不应该有任何终止符(因为终止符不是 SQL 语法的一部分)。 【参考方案1】:使用 JDBC,您一次执行一条语句;从外观上看,DB2 不支持它。一些驱动程序/数据库有办法解决这个问题,但它是非标准的。
因此,与其尝试一次执行两条语句,不如一个接一个地执行它们。
【讨论】:
很奇怪,它可以在 DB2 for z/OS 上运行,但我没有找到关于 Windows 版本的太多信息。 @User2709 据我所知,没有一个“DB2”,有多个变体都称为 DB2,并且功能和支持因平台和变体而异。以上是关于在 DB2 窗口上使用 JDBC 运行多语句查询的主要内容,如果未能解决你的问题,请参考以下文章
如何通过java程序查询出来与数据库中指定的表相关联的表呢?
在 Java DB2 JDBC 中:如何在 SELECT 语句的 WHERE 子句中使用空参数,其中值可以为空或不为空?