- 1
- 0
- 约4.93千字
- 约 8页
- 2017-12-22 发布于河南
- 举报
第21章 异常处理
第21章 异常处理
/****************第21章 异常处理*****************/
使用RAISE语句抛出一个用户自定义的异常e_illegalValue。
DECLARE
e_ illegalValue EXCEPTION;
v_ result NUMBER (3);
BEGIN
/*查询学生编号为s102203,课程编号为t105的成绩*/
SELECT result INTO v_ result
FROM t_result
WHERE stuID =s102203
AND curID = t105;
/*当查询到的学生成绩大于100 或者小于0时,抛出异常*/
IF v_ result 100 OR v_ result 0 THEN
RAISE e_illegalValue;
END IF;
END;
使用RAISE语句显式抛出预定义异常的例子。
DECLARE
v_ resultPoin NUMBER (3); -- 成绩绩点
v_credit NUMBER (1); -- 课程学分
BEGIN
/*查询学生编号为s102203,课程编号为t105的成绩绩点*/
SELECT R.result / C.credit , C.credit INTO v_ resultPoin.,v_credit
FROM t_result R ,t_curriculum C
WHERE R curID. =C. curID
AND stuID =s102203
AND curID = t105;
/*当查询到的课程学分=0时,抛出异常*/
IF v_credit = 0THEN
RAISE ZERO_DIVIDE;
END IF;
END;
处理预定义异常
DECLARE
v_salary NUMBER(6,2); -- 教师工资
BEGIN
/* 查询指定教师编号的教师工资*/
SELECT salary INTO v_salary
FROM t_teacher
WHERE teaID= t156354;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE (‘查询数据不存在’);
INSERT INTO t_log -- 将错误信息写入日志表中
VALUES(‘teaID does not exist!’ ,SYSDATE, ‘admin’);
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE (‘查询的结果多于1行’);
INSERT INTO t_log -- 将错误信息写入日志表中
VALUES(‘teaID row is over 1!’ ,SYSDATE, ‘admin’);
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE (‘发生其他错误’);
INSERT INTO t_log -- 将错误信息写入日志表中
VALUES(‘Oracle errort!’ ,SYSDATE, ‘admin’);
END;
处理自定义异常
DECLARE
e_ illegalValue EXCEPTION;
e_ noRows EXCEPTION;
v_ result NUMBER (3);
BEGIN
/*查询学生编号为s102203,课程编号为t105的成绩*/
SELECT result INTO v_ result
FROM t_result
WHERE stuID =s102203
AND curID =’ t105;
/*没有查询到数据,抛出e_ noRows异常*/
IF SQL%NOTFOUND THEN
RAISE e_ noRows;
END IF;
/*当查询到的学生成绩大于100 或者小于0时,抛出e_illegalValue异常*/
IF v_ result 100 OR v_ result 0 THEN
RAISE e_illegalValue;
END IF;
EXCEPTION
WHEN e_ noRows THEN
DBMS_OUTPUT.PUT_LINE (‘查询数据不存在’);
INSERT INTO t_log -- 将错误信息写入日志表中
VALUES(‘
您可能关注的文档
最近下载
- 学会欣赏艺术养成对美的感知习惯.pptx VIP
- 二手书微信小程序的设计与实现.docx VIP
- 2025年及未来5年中国超硬石膏粉市场数据分析及竞争策略研究报告.docx
- 技术进步与社会生活的变化 教学设计 高二历史统编版(2019)选择性必修2+经济与社会生活.docx VIP
- 专题12.27 全等三角形几何模型分类专题(全章专项练习)(学生版) 2024-2025学年八年级数学上册基础知识专项突破讲与练(人教版).pdf VIP
- 梗阻性黄疸患者护理查房.pptx VIP
- 梗阻性黄疸患者护理查房.pptx VIP
- 2025-2026学年八年级上册数学 人教版 期末综合复习试题(含答案).pdf VIP
- 2025年湖南有色金属职业技术学院单招职业技能考试题库及答案.docx VIP
- 加油站安全专项整治工作方案范文集合5篇.doc VIP
原创力文档

文档评论(0)