Oracle Exception Custom Error: сообщение QUERY
Я пытаюсь выдать пользовательскую ошибку в стороннем приложении ERP с помощью триггера. Вот код, который работает правильно.
CREATE OR REPLACE TRIGGER Rec_Traceability
BEFORE INSERT ON rec
FOR EACH ROW
DECLARE
RecJob NUMBER;
OperationCode VARCHAR2(15);
CCCode VARCHAR2(10);
IssQty NUMBER;
RecQty NUMBER;
is_wip NUMBER;
IssueLow EXCEPTION;
PRAGMA exception_init(IssueLow,-20001);
BEGIN
SELECT ITEM_WIP into is_wip FROM item WHERE item_code = (:new.item_code);
IF (is_wip = 1) THEN
SELECT JOB_NO, OPCLASS_CODE, CC_CODE into RecJob, OperationCode, CCCode FROM JOBOP WHERE JOBOP_ID = :new.JOBOP_ID;
--Total issued in meters from the operation
--SELECT ISS_ID, ISS.ITEM_CODE, ISS.REC_ID, ISS.ISS_QTY, JOBOP_ID, OPCLASS_CODE, CC_CODE, JOBOP_QTY, ESTOP_QTY, nvl(ruleit_val,1), iss_qty*nvl(ruleit_val,1)
SELECT nvl(sum(iss_qty*nvl(ruleit_val,1)),0) into IssQty
FROM iss, ruleit, jobop
WHERE iss.item_code = ruleit.item_code(+)
AND jobop.jobop_id = to_number(iss.iss_code)
AND (urule_code = 'Kg2Meter' or iss.unit_code = 'm')
AND OPCLASS_CODE LIKE 'Print%'
AND iss.job_no = RecJob; --88280
--Total receipt qty in meters from the operation
--SELECT REC.ITEM_CODE, REC.REC_QTY, REC.UNIT_CODE, JOB_NO, REC.JOBOP_ID, OPCLASS_CODE, CC_CODE, JOBOP_QTY, ESTOP_QTY
SELECT NVL(SUM(REC.REC_QTY),0) into RecQty
FROM rec, jobop
WHERE rec.jobop_id = jobop.jobop_id
AND OPCLASS_CODE LIKE 'Print%'
AND job_no = RecJob; --88280
**IF (OperationCode = 'Print' AND IssQty < (RecQty + :new.REC_QTY)) THEN
INSERT INTO RecAudit VALUES (:new.REC_ID, RecJob, :new.JOBOP_ID, IssQty, :new.REC_QTY, RecQty, (RecQty + :new.REC_QTY), OperationCode, CCCode);
RAISE_APPLICATION_ERROR(-20001, 'Issue Quantity Low');
END IF;**
END IF;
Моя проблема заключается в том, что мне нужно отправить более удобную ошибку. Приведенный выше код дает эту ошибку:
Я попытался отправить более удобный отзыв, используя следующий код.
EXCEPTION
WHEN IssueLow
THEN
dbms_output.put_line(SQLCODE);
dbms_output.put_line(sqlerrm);
END;
Это не создает окно сообщения об ошибке:QUERY и не дает никаких отзывов в стороннем приложении. В идеале я хочу отправить окно сообщения, подобное этому, в приложение.
Можно ли создать пользовательское окно "Ошибка: запросить сообщение" или хотя бы подавить другие части ошибки? Есть ли другие способы сделать это? Я не программист для стороннего приложения.
По состоянию на 2014 год эта ветка в основном говорит о том, что я хочу, таким образом невозможно. Это все еще так?