ためschema.sqlで "DROP TABLE IF EXISTSを":使用することができません私は私のschema.sql内のテーブルの</p> <p>セットアップCREATE/DROPで助けを必要と春のブートアプリケーション
- のOracle XEを
- 春ブーツ1.4.0
- のJava
私はschema.sqlに次のエントリを持っている1.8:
:私は、私は、Oracleに存在する場合にDROP TABLEを行う方法についていくつかの助けを見上げたときに例外DROP TABLE table_a; nested exception is java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
は、私が得た最高の答えは、次の(のsqldeveloperで作品)だっ取得
DROP TABLE table_a;
CREATE TABLE table_a
(
id VARCHAR(5) PRIMARY KEY,
name VARCHAR(100));
:BEGIN EXECUTE IMMEDIATE 'DROP TABLE table_a'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; EXECUTE IMMEDIATE 'CREATE TABLE table_a ( id VARCHAR(5) PRIMARY KEY, name VARCHAR(100) )'; END;
しかしながら、上記のコードは次の例外をスロー2016-08-10 14:55:36.232 INFO 9032 --- [main] osjdbc.datasource.init.ScriptUtils:URL [file:/ C:/ projects/project_a/target/classes/schemaからSQLスクリプトを実行しています。 [main] oswcsGenericWebApplicationContext:コンテキストの初期化中に例外が発生しました - リフレッシュの試みをキャンセルしました:org.springframework.beans.factory.BeanCreationException:名前が ' org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration ':autowired依存関係の注入に失敗しました。ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:フィールドをオートワイヤできませんでした:private javax.sql.DataSource org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration.dataSource;ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:クラスパスのリソース[org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration $ NonEmbeddedConfiguration.class]で定義された 'dataSource'という名前のBeanを作成中にエラーが発生しました。ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです: 'dataSourceInitializer'という名前のBeanを作成中にエラーが発生しました:initメソッドの呼び出しに失敗しました。ネストされた例外はorg.springframework.jdbc.datasource.init.ScriptStatementFailedExceptionです:URL [file:/ C:/projects/project_a/target/classes/schema.sql]のSQLスクリプトステートメント#1を実行するのに失敗しました:BEGIN EXECUTE IMMEDIATE 'DROP TABLE table_a ';ネストされた例外はjava.sql.SQLExceptionをある:ORA-06550:行1、列44: PLS-00103:記号 "エンドオブファイル" 以下のいずれかを期待するときに発生しました:
- & = - +; < />はmodで残りはrem戻りません <>または!= or〜=> = < = <>および/または のような2のような4のような使い方||マルチセットバルク メンバーSUBMULTISET
は、誰もが春のブートでのOracleのテーブルのCREATE/DROPを処理するために、よりエレガントな方法がありますか?
あなたが望むものはかなりわかりません。テーブルの作成は例外ハンドラ内にあります。テーブルが存在する場合、テーブルは削除され、再作成されません。とにかく、フレームワークは、最初のセミコロンまでの最初の2行をスタンドアロンの文として見ています。明らかに、すべてが1つのPL/SQLブロックであることはわかりません。文の区切り文字を変更できますか? –
[oracle pl/sqlのテーブルの作成または置換]の可能な複製(http://stackoverflow.com/questions/16634699/create-or-replace-table-in-oracle-pl-sql) – mathguy
@mathguy - 質問実際にはPL/SQLでテーブルを削除して作成する方法ではありません(ここではスキーマ作成スクリプトのようですが、実行時テーブル作成時の警告は実際には適用されません)。PL /春のブートからのSQLブロック? –