0

写了这个脚本:

static  void schema()
{
    Sql.newInstance(*DB_CONFIG, DB_DRIVER).execute('''
        drop table if exists post;
        drop table if exists author;
        create table author(
            id integer primary key,
            name varchar(500)
            );
        create table post(
            id integer primary key,
            title varchar(500),
            text longvarchar,
            author integer not nul,
            foreign key(author) references author(id)
            );
        ''')
}

开始后,我看到了:

“警告:执行失败:因为:ORA-00933:SQL 命令未正确结束”

我正在使用 Oracle 11g 2 数据库和 oracle jdbc 驱动程序。

4

1 回答 1

2

如果帖子存在则删除表;如果存在作者,则删除表;

它不是有效的Oracle 语法。你可以通过以下方式做到这一点 -

BEGIN
   EXECUTE IMMEDIATE 'DROP TABLE post';
EXCEPTION
   WHEN OTHERS THEN
      IF SQLCODE != -942 THEN
         RAISE;
      END IF;
END;

BEGIN
   EXECUTE IMMEDIATE 'DROP TABLE author';
EXCEPTION
   WHEN OTHERS THEN
      IF SQLCODE != -942 THEN
         RAISE;
      END IF;
END;

还有另一个语法错误 -

作者整数不为空,

将其更正为NOT NULL.

于 2015-02-16T08:20:58.847 回答