更新日期:2024年09月11日
批量更新特性类似于多条 GBase 8s SQL PREPARE 语句。可如下列示例中那样发出批量更
新语句:
PREPARE stmt FROM "insert into tab values (1);
insert into tab values (2);
update table tab set col = 3 where col = 2";
GBase 8s JDBC Driver 中的批量更新特性遵守 JDBC 3.0 规范,有这些例外:
•
SQL 语句
•
从 Statement.executeBatch() 返回值
SQL 语句和批量更新
不可将下列命令放入多语句 PREPARE 语句内:
•
SELECT(SELECT INTO TEMP 除外)语句
•
DATABASE 语句
•
CONNECTION 语句
要了解详细信息,请参阅《GBase 8s SQL 指南:语法》。
从 Statement.executeBatch() 方法返回值
以下列方式,返回值不同于 JDBC 3.0 规范:
•
如果将 IFX_BATCHUPDATE_PER_SPEC 环境变量设置为 0,则仅返回批量中执行
的第一个语句的更新数。如果将IFX_BATCHUPDATE_PER_SPEC 环境变量设置
为 1(缺省值),则返回值等于由 Statement.executeBatch() 执行的所有 SQL 语句
GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 69 -
影响的行数。要获取更多信息,请参阅 随同 GBase 8s JDBC 驱动程序的 GBase 8s
环境变量。
•
当在 Statement 对象中执行的批量更新中发生错误时,该语句不影响行;不执行该
语句。在此情况下,调用BatchUpdateException.getUpdateCounts() 会返回 0。
•
当在 PreparedStatement 对象中执行的批量更新中发生错误时,
在数据库服务器上成
功地插入了或更新了的行不恢复它们的更新前状态。
然而,
不是始终提交这些语句;
它们仍处于基本的 autocommit 模式。
BatchUpdate.java 示例文件展示如何将批量更新发送至数据库服务器。