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;

別の構文エラーがあります -

作成者の整数は null ではありません。

に修正しNOT NULLます。

于 2015-02-16T08:20:58.847 に答える