Компиляция триггера SQL, но я получаю ошибку
Я создал триггер в SQL, и он компилируется нормально, но когда я запускаю вставку, я получаю следующую ошибку:
SQL Error: ORA-01403: no data found
ORA-06512: at "EOCRIBIN.SHIPMENT_CAPACITY", line 5
ORA-04088: error during execution of trigger 'EOCRIBIN.SHIPMENT_CAPACITY'
01403. 00000 - "no data found"
*Cause: No data was found from the objects.
*Action: There was no data from the objects which may be due to end of fetch.
Вот триггер:
CREATE OR REPLACE TRIGGER Shipment_capacity
BEFORE INSERT or UPDATE on SHIPMENT_TYPE FOR EACH ROW
DECLARE
NOT_ENOUGH_CAPACITY EXCEPTION;
WEIGHT INTEGER;
BEGIN
SELECT VolumeCapacity
INTO WEIGHT
FROM shipment_type
WHERE ShipmentType = :NEW.ShipmentType;
IF WEIGHT > :new.WeightCapacity THEN
RAISE NOT_ENOUGH_CAPACITY;
END IF;
EXCEPTION
WHEN NOT_ENOUGH_CAPACITY THEN
RAISE_APPLICATION_ERROR(-200003,'Volume capacity exceeds weight limit');
END;
Таблица состоит из следующего:
CREATE TABLE SHIPMENT_TYPE
(
ShipmentType varchar(25) primary key,
VolumeCapacity INT,
WeightCapacity INT,
Temperature float
);
Любая идея, почему эта ошибка происходит?
1 ответ
Я думаю, что ваш запрос выбора ничего не возвращает. Вы можете поймать исключение с
WHEN NO_DATA_FOUND THEN
--whatever you want to do when the error appear
END;