oracle的异常处理
/**
写入自动施封命令:【同步webservice使用】
wyg 2017-03-12
*/
PROCEDURE ISDT_VEHICLE_AutoLock(P_WID IN VARCHAR2,
P_VEHICLENO IN VARCHAR2,
P_STATE OUT INT,
P_MSG OUT VARCHAR2) IS
BEGIN
insert into t_isdt_elockautorequest
(requestid,
wid,
vehicleno,
operatetype,
created_date,
last_updated_date)
values
(sys_guid(), P_WID, P_VEHICLENO, 1, sysdate, sysdate);
COMMIT;
P_STATE := 1;
P_MSG := 'success';
EXCEPTION
WHEN OTHERS THEN
rollback;
P_STATE := 0;
P_MSG := SUBSTRB('line:' || dbms_utility.format_error_backtrace() ||
' Occur error;' || SQLCODE || ',' || SQLERRM,
1,
200);
END;
EXCEPTION WHEN DUP_VAL_ON_INDEX THEN INSERT INTO t_isdt_vehicle_track_err (car_num, gpstime, lon, lat, speed, direction, odometer, statusstr, placeroad, created_date, CREATED_BY) VALUES (P_CAR_NUM, P_GPSTIME, P_LON, P_LAT, P_SPEED, P_DIRECTION, P_ODOMETER, P_STATUSSTR, P_PLACEROAD, SYSDATE, 1); P_STATE := 0; P_MSG := SUBSTRB('line:' || dbms_utility.format_error_backtrace() || ' Occur error;' || SQLCODE || ',' || SQLERRM, 1, 200); COMMIT; WHEN OTHERS THEN ROLLBACK; P_STATE := 0; P_MSG := SUBSTRB('line:' || dbms_utility.format_error_backtrace() || ' Occur error;' || SQLCODE || ',' || SQLERRM, 1, 200);
显示结果:
ine:ORA-06512: 在 "employeDB.__DATA_SYNC", line 512
Occur error;-12899,ORA-12899: 列 "EMS"."T_ISDT_ELOCKAUTOREQUEST"."WID" 的值太大 (实际值: 137, 最大值: 50)
搏击长空

浙公网安备 33010602011771号