【发布时间】:2016-02-15 00:25:08
【问题描述】:
在 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>
不知道错误是什么意思,感谢任何帮助!
谢谢!
【问题讨论】:
-
这真的正是您使用的 CREATE TABLE 语句吗?首先将其调整为正确的可执行代码。
-
DB2 没有用于检查表是否存在于CREATE TABLE 查询中的语法。请参阅此检查表是否存在(使用 jdbc)stackoverflow.com/a/2942795/1737819。
-
@Spookiecookie 问题中显示的方法在 DB2 中运行良好。如果它不存在,它将创建一个表,但如果该表存在,它会失败并出现错误,并且
continue handler取代了该错误。问题在于创建表的语法。