PL/SQL和SQL脚本在一个sqlFile中,并带有用于Oracle的liquibase
我们正在尝试使用liquibase 3.8.0在同一liquibase变更集中运行存储过程和SQL语句,并得出以下错误 运行Liquibase:ORA-06550:第12行第2列时出现意外错误:PLS-00103:遇到符号“/”PL/SQL和SQL脚本在一个sqlFile中,并带有用于Oracle的liquibase,oracle,liquibase,liquibase-sql,Oracle,Liquibase,Liquibase Sql,我们正在尝试使用liquibase 3.8.0在同一liquibase变更集中运行存储过程和SQL语句,并得出以下错误 运行Liquibase:ORA-06550:第12行第2列时出现意外错误:PLS-00103:遇到符号“/” 你看到这个问题了吗?尝试使用endDelimiter=“/”并删除最后的分号是,我试过了,得到了下面的错误ORA-06550:第11行第2列:PLS-00103:在预期以下情况时遇到“/”符号:;为什么要将这两件事放在一个变更集中?这些语句是DDL语句。最好将每个DDL
你看到这个问题了吗?尝试使用
endDelimiter=“/”
并删除最后的分号代码>是,我试过了,得到了下面的错误ORA-06550:第11行第2列:PLS-00103:在预期以下情况时遇到“/”符号:;为什么要将这两件事放在一个变更集中?这些语句是DDL语句。最好将每个DDL语句放在一个单独的变更集中。将其拆分为两个变更集将使这一过程更加容易,即使您不希望这样,最好至少将其拆分为两个SQL文件,这样您就不需要属性来使其中一个语句工作,而这可能会导致另一个语句失败。
<changeSet author="cng-wow-initial" id="ad_group_role_mapping.sql2">
<sqlFile dbms="oracle"
encoding="utf8"
path="../wrk/tables/ad_group__role_mapping.sql"
splitStatements="false"
stripComments="false" endDelimiter="\/"/>
</changeSet>
DECLARE
e_error EXCEPTION;
PRAGMA exception_init ( e_error,-00942 );
BEGIN
EXECUTE IMMEDIATE 'drop table XXXX.AD_GROUP_ROLE_MAPPING';
EXCEPTION
WHEN e_error THEN
NULL;
END;
/
CREATE TABLE XXXX.AD_GROUP_ROLE_MAPPING(
AD_GROUP_NAME VARCHAR2(200) NOT NULL,
ROLE_ID NUMBER,
PRIMARY KEY (AD_GROUP_NAME));