我試圖運行下面的存儲過程:運行PLSQL(甲骨文)的Liquibase錯誤的存儲過程:包裝或函數X處於無效狀態
CREATE OR REPLACE PROCEDURE RETRY_TRANS_EXCEPTION
AS
BEGIN
FOR i IN 1..5 LOOP
DBMS_OUTPUT.PUT('Try #' || i);
ALTER TABLE CIS_CASE ADD TEST01 varchar2(1) NOT NULL;
END;
END;
/
,並要求其在changelog.xml爲:
<sql>CALL RETRY_TRANS_EXCEPTION();</sql>
我得到錯誤:
Liquibase update Failed: Migration failed for change set eldata-changelog.xml::2016-08-25-cn-01::Ch Will:Reason: liquibase.exception.DatabaseException: Error executing SQL CALL RETRY_TRANS_EXCEPTION(): ORA-06575: Package or function RETRY_TRANS_EXCEPTION is in an invalid state
什麼,我想實現的是能夠運行存儲凝固酶原通過Liquibase通過一個循環來控制它。
感謝您的幫助Prashant。在什麼情況下,我的工作是你的解決方案,以及一個變化:
CREATE OR REPLACE PROCEDURE RETRY_TRANS_EXCEPTION
AS
v_query varchar2(100);
BEGIN
FOR i IN 1..500 LOOP
DBMS_OUTPUT.PUT('Try #' || i);
v_query := 'ALTER TABLE CIS_CASE ADD TEST01 varchar2(1) NULL';
execute immediate v_query;
END loop;
END;
/
,然後從更新日誌調用存儲過程,如:
<changeSet id="2016-08-25-cw-01" author="Ch Will">
<comment>
Testing retry logic on liquibase
</comment>
<sql>CALL RETRY_TRANS_EXCEPTION();</sql>
</changeSet>
不知道爲什麼我得到錯誤:原因:liquibase.exception.DatabaseException:執行SQL的錯誤CALL RETRY_TRANS_EXCEPTION():ORA-06576:不是有效的函數或過程名稱 – kamal