我正在尝试使用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
有谁知道可能是什么问题?
答案 0 :(得分:0)
显然,execute()方法只接受单个语句,而不接受由您尝试的任何内容分隔的多个语句。它在API文档中有明确说明:&#34;执行给定的SQL语句&#34;。
您可以将多个语句包装到(单个)复合语句中:
begin execute immediate 'alter ...'; execute immediate 'alter ...'; end