Liquibase の Grails データベース移行プラグインを使用しています。移行でPLSQLステートメントを使用して、テーブルの制約を見つけて削除しようとしていますが、制約の名前がわからず、使用するシステムによって異なるため、このアプローチを使用しています。
いくつかのメモ:
- グレイル 1.3.7
- データベース移行 1.0
これは移行のコードです
sql("declare\n" +
"vOldName all_constraints.constraint_name%TYPE\n" +
"begin\n" +
"select CONSTRAINT_NAME\n" +
"into vOldName\n" +
"from all_constraints\n" +
"where TABLE_NAME='TABLENAME' and CONSTRAINT_TYPE='U' and OWNER='USERNAME'\n" +
"execute immediate 'alter table USERNAME.TABLENAMEdrop constraint '\n" +
"|| vOldName\n" +
"end")
これを実行すると、次のエラーが表示されます。
java.sql.SQLException: ORA-06550: line 3, column 1:
PLS-00103: Encountered the symbol "BEGIN" when expecting one of the following:
:= ( ; not null range default character
The symbol ";" was substituted for "BEGIN" to continue.
各ステートメントの最後に追加しようとし;
ましたが、コードでファイルの終わりが表示されると不平を言います。
何か助けてください?