CREATEORREPLACETRIGGER upd_ocr BEFORE INSERTON ex_edm_ocr FOR EACH ROW DECLARE v_province ip_city.province%TYPE; v_city ip_city.city%TYPE; v_task_id ex_edm_task_detail.task_id%TYPE; v_project_id ex_edm_task_detail.project_id%TYPE; v_user_id ex_edm_task_detail.user_id%TYPE; v_email ex_edm_task_detail.email%TYPE; BEGIN SELECT task_id, project_id, user_id, email INTO v_task_id, v_project_id, v_user_id, v_email FROM ex_edm_task_detail WHERE id=:new.detail_id; SELECT province, city INTO v_province, v_city FROM ip_city WHERE ip2number(:new.ip) BETWEEN ip2number(ip_begin) AND ip2number(ip_end); :new.task_id:=v_task_id; :new.project_id:=v_project_id; :new.user_id:=v_user_id; :new.email:=v_email; :new.province:=v_province; :new.city:=v_city; EXCEPTION WHEN no_data_found THEN :new.city :='未知'; :new.city :='未知'; WHEN too_many_rows THEN :new.task_id:=v_task_id; :new.project_id:=v_project_id; :new.user_id:=v_user_id; :new.email:=v_email; WHEN OTHERS THEN :new.city :='未知'; :new.city :='未知'; END;