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 и не дает никаких отзывов в стороннем приложении. В идеале я хочу отправить окно сообщения, подобное этому, в приложение.

Nice User Friendly Ошибка

Можно ли создать пользовательское окно "Ошибка: запросить сообщение" или хотя бы подавить другие части ошибки? Есть ли другие способы сделать это? Я не программист для стороннего приложения.

По состоянию на 2014 год эта ветка в основном говорит о том, что я хочу, таким образом невозможно. Это все еще так?

Пользовательское исполнение с пользовательским сообщением

0 ответов

Другие вопросы по тегам