在 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 子句中使用空参数,其中值可以为空或不为空?

使用准备好的语句 DB2 时获取 SQLCODE=-313

DB2 JDBC Windows 身份验证

DB2在查询语法上和Oracle、Mysql差异

DB2 JDBC 驱动程序(类型 4)在 Execute() 上挂起