我有一個觸發器引發了一個錯誤,我不知道如何知道PL/SQL代碼的哪一行正在拋出該錯誤。我的錯誤是行編號如何在Oracle觸發器中工作?
[甲骨文] ORA-01403:找不到數據 ORA-06512:在 「MYSCHEMA.FOO_BI」,9號線
我的觸發是這樣的:
create or replace TRIGGER "MYSCHEMA"."FOO_BI"
BEFORE INSERT ON FOO REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
DECLARE
NUM1 NUMBER;
NUM2 NUMBER;
BEGIN
-- some comment
if :new.batch_num is null then
SELECT COUNT(*) INTO :NEW.BATCH_NUM FROM FOO WHERE CORP_ID = :NEW.CORP_ID;
end if;
if :new.batch_id is null or :new.batch_id = '' then
:NEW.BATCH_ID := :NEW.CORP_ID || '-' || :NEW.BATCH_NUM;
end if;
/* etc... */
我發現看起來像similar question,但行編號從create or replace...
開始,並將我的錯誤行表示爲註釋,我認爲它必須是僞造的。在執行觸發器時拋出錯誤時,如何報告行編號?
Nit:在Oracle中,空字符串等於null。所以'或者:new.batch_id ='''相當於'or:new.batch_id = null',它永遠不會返回true。第一部分':new.batch_id爲空'是你所需要的。 – 2010-06-08 17:22:19
@Shannon:謝謝你的提示!我不能要求所有這些觸發的責任,但我必須承認,這部分可能是我的。也許。 – 2010-06-08 17:28:43