plsql编程 异常 EXCEPTION ROLLBACK
来源:互联网 发布:cf挂源码 编辑:程序博客网 时间:2024/06/06 00:42
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;
0 0
- plsql编程 异常 EXCEPTION ROLLBACK
- PLSQL编程、游标、异常
- PLSQL编程之异常
- PLSQL编程5:plsql异常处理
- Oracle PLSQL Exception异常分类、异常抛出、异常处理、异常传播
- 第八章:plsql编程基础(exception、游标、rowtype、集合、数组)
- PLSQL-异常
- Spring事务异常rollback-only
- PLSQL Procedure Customized Exception
- ERROR TransactionInterceptor - Application exception overridden by rollback exception
- 异常(exception)
- 异常:Exception
- Exception 异常
- 异常Exception
- 异常--Exception
- 异常(exception)
- 异常Exception
- 异常 Exception
- android系统音量界面相关
- 汇编_寄存器_笔记
- python 图片抓取
- 整数变换问题
- Facebook审核流程
- plsql编程 异常 EXCEPTION ROLLBACK
- 38-启动定时炸弹 alarm
- linux启动tomcat过程,像eclipse一样在控制台输出
- Kernal Panic - Not syncing : VFS: unable to mount root fs on unknown-block (0,0)
- 备忘一下,github撤销操作
- [SPOJ705]DISUBSTR - Distinct Substrings(后缀数组)
- openMP 并行编程 基础
- python中set()函数的用法
- 解决centos中tomcat8日志乱码问题