在DB2中,我们想要检查表是否存在,并且根据我们想要创建表。我在网上搜索,我总是找到相同的anwser,但是当我想运行查询时,我一直收到错误。
begin
declare continue handler for sqlstate '42710' begin end;
execute immediate 'CREATE TABLE HTMLMONIDB.DLW_C(MSG_ID varchar(119) NOT NULL, DIRECTION varchar(8) NOT NULL, TO_PARTY_NAME varchar(60) NOT NULL, PRIMARY KEY CLUSTERED (MSG_ID ASC, DIRECTION ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]';
end
我一遍又一遍地听到同样的错误。
java.security.PrivilegedActionException: java.sql.SQLSyntaxErrorException: [SQL0104] Token 'CREATE TABLE SHEMA.TABLENAME was not valid. Valid tokens: : <IDENTIFIER> <PLI_STRING>
不确定错误的含义,敬请任何帮助!
谢谢!
答案 0 :(得分:2)
问题在于您的create table语法。
这似乎与有效的DB2语法不相似。相反,它看起来很像SQL Server语法。请参阅特定版本DB2的文档。
在调试此问题方面,您应首先在SQL客户端中直接使用create table
语句,然后再尝试将其置于动态SQL中。然后,在尝试将其合并到Java中之前,应该使复合SQL语句正常工作。