SELECT ID,NAME,price,stockcount FROM es_product;
--预定义异常
--实现购买商品时更新库存量
DECLARE
V_ID NUMBER := &ID; --接收用户输入的商品id
V_STOCK_COUNT NUMBER; --商品库存量
BEGIN
--查询到了商品库存量
SELECT STOCKCOUNT INTO V_STOCK_COUNT FROM ES_PRODUCT WHERE ID = V_ID;
--根据库存进行判断,如果库存>0,购买,反之,不能购买
IF V_STOCK_COUNT > 0 THEN
UPDATE ES_PRODUCT SET STOCKCOUNT = STOCKCOUNT - 1 WHERE ID = V_ID;
COMMIT;
DBMS_OUTPUT.PUT_LINE('商品库存已经更新!');
ELSE
DBMS_OUTPUT.PUT_LINE('商品库存为0,无法更新!');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('该商品不存在!');
ROLLBACK;
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('该商品存在了多行!');
ROLLBACK;
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('发生了其他的错误!!');
ROLLBACK;
END;
SELECT * FROM es_order
--自定义异常
--实现删除订单的功能
DECLARE
V_ID NUMBER := &ID; --用户要删除的订单id
E_NO_RESULT EXCEPTION; --自定义异常
V_EXCEPTION1 CONSTANT VARCHAR2(50) := '删除的数据不成功!'; --常量:异常信息
V_EXCEPTION2 CONSTANT VARCHAR2(50) := '发生了其他的错误!';
BEGIN
DELETE FROM ES_ORDER WHERE ID = V_ID;
IF SQL%NOTFOUND THEN
RAISE E_NO_RESULT; --触发异常
END IF;
EXCEPTION
WHEN E_NO_RESULT THEN
DBMS_OUTPUT.PUT_LINE(V_EXCEPTION1);
ROLLBACK;
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(V_EXCEPTION2);
ROLLBACK;
END;
--预定义异常
--实现购买商品时更新库存量
DECLARE
V_ID NUMBER := &ID; --接收用户输入的商品id
V_STOCK_COUNT NUMBER; --商品库存量
BEGIN
--查询到了商品库存量
SELECT STOCKCOUNT INTO V_STOCK_COUNT FROM ES_PRODUCT WHERE ID = V_ID;
--根据库存进行判断,如果库存>0,购买,反之,不能购买
IF V_STOCK_COUNT > 0 THEN
UPDATE ES_PRODUCT SET STOCKCOUNT = STOCKCOUNT - 1 WHERE ID = V_ID;
COMMIT;
DBMS_OUTPUT.PUT_LINE('商品库存已经更新!');
ELSE
DBMS_OUTPUT.PUT_LINE('商品库存为0,无法更新!');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('该商品不存在!');
ROLLBACK;
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('该商品存在了多行!');
ROLLBACK;
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('发生了其他的错误!!');
ROLLBACK;
END;
SELECT * FROM es_order
--自定义异常
--实现删除订单的功能
DECLARE
V_ID NUMBER := &ID; --用户要删除的订单id
E_NO_RESULT EXCEPTION; --自定义异常
V_EXCEPTION1 CONSTANT VARCHAR2(50) := '删除的数据不成功!'; --常量:异常信息
V_EXCEPTION2 CONSTANT VARCHAR2(50) := '发生了其他的错误!';
BEGIN
DELETE FROM ES_ORDER WHERE ID = V_ID;
IF SQL%NOTFOUND THEN
RAISE E_NO_RESULT; --触发异常
END IF;
EXCEPTION
WHEN E_NO_RESULT THEN
DBMS_OUTPUT.PUT_LINE(V_EXCEPTION1);
ROLLBACK;
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(V_EXCEPTION2);
ROLLBACK;
END;