Oracle Exception自定义错误:QUERY消息

时间:2017-07-06 18:09:09

标签: oracle exception user-defined

我试图使用触发器在第三方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;

我的问题是我需要发回更多用户友好的错误。上面的代码给出了这个错误:

Nasty non user-friendly error

我尝试使用以下代码发送更多用户友好的反馈。

EXCEPTION
WHEN IssueLow 
THEN
    dbms_output.put_line(SQLCODE);
    dbms_output.put_line(sqlerrm);

END;

这不会创建错误:QUERY消息框或在第三方应用程序中提供任何反馈。理想情况下,我想向应用程序发送这样的消息框。

Nice User Friendly Error

是否可以创建自定义错误:查询消息框或至少抑制错误的其他部分?还有其他方法吗?我不是第三方应用程序的程序员。

截至2014年,下面的这个帖子基本上是以这种方式说出我想要的东西。这仍然是这样吗?

User-defined execption with custom message

0 个答案:

没有答案