Я использую flyway для переноса данных с использованием Jenkins.Я хочу включить и отключить триггеры, когда выполняется код исправления данных.Мне удалось обработать исключение, и моя функция триггеров enable disable работает нормально.Однако я хочу напечатать точный номер строки, когда происходит исключение.Но номер строки печатается там, где вызывается RAISE_APPLICATION_ERROR.Как я могу сохранить номер строки, как хранится v_errorMsg?Я хочу видеть точный номер строки в скрипте на консоли Jenkins.
Ниже приведен мой пример сценария PLSQL, выполненный с использованием flyway.
DECLARE
v_errFlag BOOLEAN := FALSE;
v_errorMsg VARCHAR(400);
v_dealId NUMBER;
BEGIN
BEGIN
USR.ENABLE_DISABLE_TRIGGERS('disable');
--Data Correction starts
-- Success Test
--SELECT DEAL_ID INTO v_dealId FROM USR.DEAL WHERE ROWNUM=1;
-- Error Test
SELECT DEAL_ID INTO v_dealId FROM USR.DEAL WHERE DEAL_ID=-1;
--Data Correction ends
EXCEPTION
WHEN OTHERS THEN
v_errFlag := TRUE;
v_errorMsg := SQLERRM;
END;
BEGIN
USR.ENABLE_DISABLE_TRIGGERS('enable');
SYS.DBMS_OUTPUT.PUT_LINE('Triggers Enabled');
IF v_errFlag THEN
RAISE_APPLICATION_ERROR(-20001,'Data Correction Failed :'||v_errorMsg);
ELSE
SYS.DBMS_OUTPUT.PUT_LINE('Data Correction Completed Successfully');
END IF;
END;
END;
/
Пример вывода для сценария ошибки
ORA-20001: Data Correction Failed :ORA-01403: no data found
ORA-06512: at line 25