我在 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
);
知道为什么会发生这个错误吗?
最佳答案
我认为您的选择查询没有返回任何内容。您可以使用
捕获异常WHEN NO_DATA_FOUND THEN
--whatever you want to do when the error appear
END;
关于SQL 触发器编译但出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34296654/