SQL Developer에서 실행하는 데 문제가없는 다음 코드가 있지만 liquibase 변경 내용을 넣고 실행하면 오류가 발생합니다.
DECLARE
seqval NUMBER;
BEGIN
SELECT MAX(id) + 1 INTO seqval FROM T_SLS_ITEMS;
execute immediate('CREATE SEQUENCE SEQ_SLS_ITEMS MINVALUE '||seqval||'');
END;
그리고 그것에 대한 변경 집합 :
<changeSet author="Cristian Marian (cmarian)" id="2019-05-24-171101 Fix Items sequence - creting">
<sql>
DECLARE
seqval NUMBER;
BEGIN
SELECT MAX(id) + 1 INTO seqval FROM T_SLS_ITEMS;
execute immediate('CREATE SEQUENCE SEQ_SLS_ITEMS MINVALUE '||seqval||'');
END;
</sql>
</changeSet>
오류는 다음과 같습니다.
Reason: liquibase.exception.DatabaseException: ORA-06550: line 2, column 27:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
:= . ( @ % ; not null range default character
[Failed SQL: DECLARE
seqval NUMBER] (Liquibase Update failed.)
Liquibase는 <sql>
기본 명령문 구분 기호 인을 사용 하여 태그 내부의 "스크립트"를 분할하려고합니다 ;
. PL / SQL 블록의 경우 전체 블록을 단일 명령문으로 처리해야하므로 이는 분명히 잘못된 것입니다.
이를 위해 태그에 splitStatements
속성을 사용 하십시오 <sql>
.
<sql splitStatements="false">
DECLARE
....
END;
</sql>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다