CREATE OR REPLACE TRIGGER ALARM110_BJQKB
AFTER INSERT ON ALARM110
REFERENCING OLD AS old NEW AS new
FOR EACH ROW
DECLARE
BJQKB_FSQY VARCHAR2(30);
BJQKB_XB VARCHAR2(3);
BEGIN
IF INSERTING THEN
BEGIN
SJJY_ALARM110(:new.ID,REID);
BJQKB_CCXB(:new.SEX,BJQKB_XB);
BJQKB_CCDZ(:new.CASEAREA,BJQKB_FSQY);
INSERT INTO [email protected](JJBH,JJSJ,FSQKSJ,FSQY,FSDD,XB,LXDH,CZSJ)
VALUES(:new.ID,
TO_DATE(:new.CASETIME,'YYYY-MM-DD HH24:MI:SS'),
TO_DATE(:new.ALARMTIME,'YYYY-MM-DD HH24:MI:SS'),
NVL(BJQKB_FSQY,'750000'),
:new.CASEADDR,
BJQKB_XB,
:new.SELEPHONE,
SYSDATE);
EXCEPTION WHEN OTHERS THEN -- 抛出异常
/*-- 传值过程中出现错误将错误信息插入日志表 ----------------------------------------------------------------*/
INSERT INTO JK_SJCCRZB(SJBH,CZQK,RZRQ,SJBM)
VALUES(:new.ID,
'10', -- '10' 抛出异常数据没有插入临时表
SYSDATE,
'ALARM110');
END;
END IF;
END ALARM110_BJQKB;以上是我写的触发器,当抛出异常时,将错误信息插入日志表,但此时 :new.ID 值为空了,问如何解决,在线等,急!!!
AFTER INSERT ON ALARM110
REFERENCING OLD AS old NEW AS new
FOR EACH ROW
DECLARE
BJQKB_FSQY VARCHAR2(30);
BJQKB_XB VARCHAR2(3);
BEGIN
IF INSERTING THEN
BEGIN
SJJY_ALARM110(:new.ID,REID);
BJQKB_CCXB(:new.SEX,BJQKB_XB);
BJQKB_CCDZ(:new.CASEAREA,BJQKB_FSQY);
INSERT INTO [email protected](JJBH,JJSJ,FSQKSJ,FSQY,FSDD,XB,LXDH,CZSJ)
VALUES(:new.ID,
TO_DATE(:new.CASETIME,'YYYY-MM-DD HH24:MI:SS'),
TO_DATE(:new.ALARMTIME,'YYYY-MM-DD HH24:MI:SS'),
NVL(BJQKB_FSQY,'750000'),
:new.CASEADDR,
BJQKB_XB,
:new.SELEPHONE,
SYSDATE);
EXCEPTION WHEN OTHERS THEN -- 抛出异常
/*-- 传值过程中出现错误将错误信息插入日志表 ----------------------------------------------------------------*/
INSERT INTO JK_SJCCRZB(SJBH,CZQK,RZRQ,SJBM)
VALUES(:new.ID,
'10', -- '10' 抛出异常数据没有插入临时表
SYSDATE,
'ALARM110');
END;
END IF;
END ALARM110_BJQKB;以上是我写的触发器,当抛出异常时,将错误信息插入日志表,但此时 :new.ID 值为空了,问如何解决,在线等,急!!!
我想问为什么会在抛出异常后取不到。
就是在 EXCEPTION 下面的INSERT语句
或许你的异常就是因为没有:new.ID而产生的!
你可以用一个其他字段new列来代替看看就知道了!等你调试结果!