0

我正在尝试使用 JDBC 在 DB2 中执行两个 DML 语句,但我不断收到语法错误:

ALTER TABLE "TEST" ALTER COLUMN "COL1" SET DATA TYPE INT;
ALTER TABLE "TEST" ALTER COLUMN "COL1" SET NOT NULL;

如果我一个一个地执行它们,一切都很好。

我试过没有分号,第一个语句只有一个分号。我也尝试了几个 \r\n ,我真的无法理解问题所在。

例外情况如下:

Caused by: com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=;
ALTER TABLE "TEST";1" SET DATA TYPE INT;<space>, DRIVER=3.65.77

有谁知道可能是什么问题?

4

1 回答 1

0

显然,execute() 方法只接受一个语句,而不是由你可能尝试的任何分隔的多个语句。API 文档中明确说明:“执行给定的 SQL 语句”。

您可以将多个语句包装成一个(单个)复合语句:

begin execute immediate 'alter ...'; execute immediate 'alter ...'; end
于 2013-06-14T11:59:21.390 回答