如果DB2中不存在则创建表

时间:2015-11-13 12:09:17

标签: java sql db2

在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>

不确定错误的含义,敬请任何帮助!

谢谢!

1 个答案:

答案 0 :(得分:2)

问题在于您的create table语法。

这似乎与有效的DB2语法不相似。相反,它看起来很像SQL Server语法。请参阅特定版本DB2的文档。

在调试此问题方面,您应首先在SQL客户端中直接使用create table语句,然后再尝试将其置于动态SQL中。然后,在尝试将其合并到Java中之前,应该使复合SQL语句正常工作。