我使用的是 liquibase 的 Grails 数据库迁移插件。我试图在迁移中使用 aPLSQL 语句来查找和删除表上的约束,我使用这种方法,因为我不知道约束的名称,并且它会因我使用的不同系统而异。
一些注意事项:
- 圣杯 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.
我试图添加;
到每个语句的末尾,但他们抱怨在代码中看到文件结尾。
请问有什么帮助吗?