16-1:传递异常到调用环境
DECLARE
v_ename emp.ename%TYPE;
BEGIN
SELECT ename INTO v_ename FROM emp WHERE empno=&no;
dbms_output.put_line('雇员名:'||v_ename);
END;
/
16-2:捕获异常
DECLARE
v_ename emp.ename%TYPE;
BEGIN
SELECT ename INTO v_ename FROM emp WHERE empno=&no;
dbms_output.put_line('雇员名:'||v_ename);
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('雇员号不正确,请核实雇员号!');
END;
/
16-3:使用预定义异常
DECLARE
v_ename emp.ename%TYPE;
BEGIN
SELECT ename INTO v_ename FROM emp WHERE sal=&salary;
dbms_output.put_line('姓名:'||v_ename);
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('不存在该工资值的雇员');
WHEN TOO_MANY_ROWS THEN
dbms_output.put_line('多个雇员具有该工资');
END;
/
16-4:非预定义异常
DECLARE
e_integrity EXCEPTION;
PRAGMA EXCEPTION_INIT(e_integrity,-2291);
name emp.ename%TYPE:=LOWER('&name');
dno emp.deptno%TYPE:=&dno;
BEGIN
UPDATE emp SET deptno=dno WHERE LOWER(ename)=name;
EXCEPTION
WHEN e_integrity THEN
dbms_output.put_line('该部门不存在');
END;
/
16-5:自定义异常
DECLARE
e_integrity EXCEPTION;
e_no_rows EXCEPTION;
PRAGMA EXCEPTION_INIT(e_integrity,-2291);
name emp.ename%TYPE:=LOWER('&name');
dno emp.deptno%TYPE:=&dno;
BEGIN
UPDATE emp SET deptno=dno WHERE LOWER(ename)=name;
IF SQL%NOTFOUND THEN
RAISE e_no_rows;
END IF;
EXCEPTION
WHEN e_integrity THEN
dbms_output.put_line('该部门不存在');
WHEN e_no_rows THEN
dbms_output.put_line('该雇员不存在');
END;
/
16-6:使用sqlcode和sqlerrm
BEGIN
DELETE FROM dept WHERE deptno=&dno;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('错误号:'||SQLCODE);
dbms_output.put_line('错误消息:'||SQLERRM);
END;
/
16-7:raise_application_error
CREATE OR REPLACE PROCEDURE update_sal
(name VARCHAR2,salary NUMBER)
IS
BEGIN
UPDATE emp SET sal=salary WHERE LOWER(ename)=LOWER(name);
IF SQL%NOTFOUND THEN
RAISE_APPLICATION_ERROR(-20000,'该雇员不存在');
END IF;
END;
/
exec update_sal('mary',1000)
16-8:不使用编译预警
CREATE OR REPLACE PROCEDURE dead_code AS
BEGIN
IF TRUE THEN
dbms_output.put_line('TRUE');
ELSE
dbms_output.put_line('FALSE'); -- 死代码
END IF;
END;
/
16-9:使用初始化参数plsql_warnings配置编译警告
ALTER SESSION SET plsql_warnings='ENABLE:ALL';
CREATE OR REPLACE PROCEDURE dead_code AS
BEGIN
IF TRUE THEN
dbms_output.put_line('TRUE');
ELSE
dbms_output.put_line('FALSE'); -- 死代码
END IF;
END;
/
show errors
16-10:使用包dbms_warning配置编译警告
exec dbms_warning.set_warning_setting_string('ENABLE:ALL' ,'SESSION');
CREATE OR REPLACE PROCEDURE update_sal
(name VARCHAR2,salary VARCHAR2)
IS
BEGIN
UPDATE emp SET sal=salary WHERE ename=name;
END;
/
show errors
分享到:
相关推荐
在本Java项目学习笔记中,我们关注的是SSM(Spring、SpringMVC、MyBatis)框架下的高并发秒杀API实现。这是一个典型的电商场景,其中涉及到的技术点广泛且实用,对于提升Java开发者处理高并发问题的能力至关重要。...
5. **异常处理**:在实现过程中,我们需要考虑可能出现的错误,如权限问题、无效的快照句柄等,应使用Try...Except结构进行异常处理。 6. **用户界面**:在Delphi 2010环境下,我们可以使用VCL(Visual Component ...
### Java学习笔记之异常 #### 一、异常概念与理解 异常是指在程序运行过程中发生的非预期事件,这些事件可能会导致程序无法正常执行。在Java中,异常处理是一种非常重要的机制,它允许开发者以优雅的方式处理错误...
接着,深入探讨了异常处理机制,这是Java程序健壮性的重要保障。读者将学习到如何捕获和处理运行时错误,以及如何通过try-catch-finally结构来编写更安全的代码。 此外,《林信良Java学习笔记》还涵盖了集合框架,...
Java学习笔记——异常 在Java编程中,异常处理是一项至关重要的技能,它允许开发者优雅地处理程序运行时可能遇到的问题,防止程序意外终止,并提供有用的反馈信息。异常是程序执行过程中遇到的不正常情况,例如除以...
Core Java是Java的基础,包括Java语言的核心特性,如标识符、关键字、数据类型、表达式、流控制、数组、面向对象编程(OO思想)、异常处理、GUI编程、事件处理模型、线程、标准I/O流与文件处理、网络编程等。...
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。...Java学习笔记涵盖了这些核心知识点,通过深入学习和实践,你可以逐步掌握Java编程,并应用于实际项目开发中。
例如,Python的面向对象编程、Java的异常处理、C++的模板机制,或是JavaScript的异步编程模型。理解并掌握这些语言的特性有助于提高代码质量和效率。 2. 操作系统:操作系统是计算机的心脏,学习笔记中可能涵盖了...
在C语言中,错误处理通常依赖于条件判断和异常处理机制。学会使用断点、单步执行、查看变量值等调试技巧,有助于找出和修复程序错误。 七、标准库与IO操作 C语言的标准库提供了一系列的函数,如stdio.h中的输入...
异常处理是C#中一个重要的错误处理机制。通过try-catch-finally语句块,开发者可以在程序运行时捕获并处理可能出现的异常,确保程序的健壮性。 此外,C#还引入了泛型,这是一种创建类型安全集合的强大工具。泛型...
4. **异常处理**:Java中的try-catch-finally语句块,异常类层次结构,自定义异常等,这些都是Java程序中处理错误和异常的重要部分。 5. **集合框架**:ArrayList,LinkedList,HashMap,HashSet等容器的使用,以及...
根据提供的标题、描述、标签及部分内容,我们可以提炼出关于J2ME的学习笔记中的关键知识点,主要聚焦于Java语言的基础概念,特别是与初始化和字符串相关的部分。 ### 初始化 #### 概述 - **成员变量初始化**:所有...
Java学习笔记之异常处理 Java学习笔记之异常处理是Java编程语言中的一种重要机制,用于处理程序中出现的异常情况。异常是指程序在执行过程中出现的非正常情况,例如数组下标越界、算术运算异常、空指针异常等。在...
为了深入了解Go语言,学习笔记通常包含语言的基本概念、语法特性、开发环境配置及核心功能的使用方法。 首先,Go语言相较于C++等传统编程语言,有一些显著的特征区别。Go语言为了简化设计,不支持函数重载和操作符...
j2me学习笔记【5】——抛出异常处理的小例子 j2me学习笔记【6】——获取日期时间 j2me学习笔记【7】——复选框的应用 j2me学习笔记【8】——TextField的使用实例 j2me学习笔记【9】——List中复选框的使用实例 j2me...
### Python学习笔记知识点详解 #### 一、Python简介与特性 **标题与描述解析:** "Python学习笔记.pdf" 的标题直接指出了文档的主题——Python的学习资料,而描述的重复表明该文档的主要内容即为Python的学习笔记...
1. **Java基础**:介绍Java语言的基本语法,如变量、数据类型、运算符、控制流程(条件语句、循环)、数组、字符串以及异常处理。这些基础知识是理解和编写任何Java程序的基石。 2. **面向对象编程**:深入讲解Java...
4. **异常处理**:通过try-catch语句,C++提供了异常处理机制,用于捕获和处理运行时错误,增强了程序的健壮性。 5. **STL(标准模板库)**:STL是C++的一个重要组成部分,包含容器(如vector、list、set)、迭代器...
在Java中,异常处理是通过异常类来实现的,这些类描述了异常信息并提供了处理异常的方法。 异常处理主要有四个关键字:`try`、`catch`、`finally`和`throw`。`try`块包含可能会抛出异常的代码,`catch`块用来捕获并...
总结起来,“Python学习笔记-文件与异常”可能涵盖了文件操作的各个方面,包括基本操作、异常处理、缓冲和性能优化,以及高级特性。通过深入学习这些内容,开发者将能够编写出更稳定、更易于维护的Python程序。