`

Oracle数据库之PLSQL异常

阅读更多
--============PLSQL==异常处理=============================
-- Exception是一种PL/SQL标识符,当运行的PL/SQL块出现错误或警告,则会触发异常处理。
--PLSQL错误
----编译时错误
----运行时错误

--运行时错误
---- oracle错误 (ora-xxx)
---- PL/SQL运行错误
---- 用户定义的条件

--==========ORACLE错误处理机制===============
---- 在程序运行期间的错误对应一个异常Exception.
---- 当错误产生时抛出相应的异常.并被异常处理器捕获,
---- 程序控制权传递给异常处理器,由异常处理器来处理运行时错误.

---=========异常的触发类型==================
--隐士触发
----- oracle预定义异常
----- 非oracle预定义异常
--显式触发
----- 用户自定义异常

-- ========异常运行机制=====================
--异常捕获通过异常处理器实现,它是程序的一个独立部分.
--把错误与程序的其它部分分离开来,使程序逻辑更加易于理解.

--当异常产生时,控制权立即转移到异常处理器,一旦执行控制权被转移到异常处理器,

 
--就无法再回到本语句块的可执行部分,如果没有异常部分,则被传播到外层语句块.

 

--==异常处理语法:
exception
 when 异常名字1 then 处理异常语句1;
 when 异常名字2 or  异常名字3  then 处理异常语句2;
 when others then 其它处理3;
-- 允许有多个异常处理器
end;

--Exception关键字:标识异常处理的开始区域.
--一个异常处理器可以捕获多个异常,只需要在when子句中用or连接即可
--一个异常只能被一个异常处理器捕获,并进行处理.
-- others异常处理器总是作为异常处理最后一个异常处理器 ,
-- 负责处理那些没有被其他异常处理器捕获的异常.

--========Oracle预定义错误的捕获============
--no_data_found
--too_many_rows
--ZERO_DIVIDE

--演示 ORACLE预定义异常捕获的语法 ZERO_DIVIDE异常==========
declare
	v_id number(4) ;
begin
	select deptno into v_id from emp where 1= 2;--no_data_found Exception
	--select deptno into v_id from emp where 1= 1/0;--ZERO_DIVIDE Exception
	Exception
		when ZERO_DIVIDE 
			then dbms_output.put_line('ZERO_DIVIDE Exception');	
		when no_data_found
			then dbms_output.put_line('no_data_found Exception');
		when others 
			then	dbms_output.put_line(' Exception');
end;

-- 演示关联数组的异常
declare
	type ind_tab_array is 
		table of number index by binary_integer;
	ind_tab ind_tab_array; --自动初始化null
begin
	--ind_tab(null) :=3 VALUE_ERROR
	if(ind_tab(1)) =1 --NO_DATA_FOUND
		then dbms_output.put_line(ind_tab(1));
	end if;
	Exception
		when VALUE_ERROR
			then dbms_output.put_line('VALUE_ERROR');
		when NO_DATA_FOUND
			then dbms_output.put_line('NO_DATA_FOUND');
end;

--===============非预定义异常==============
--非预定义异常:某些异常在oracle中没有定义名词,只有一个ORA-xxxx,
SQL> insert into emp(empno ) values (null);
insert into emp(empno ) values (null)
                                *
第 1 行出现错误:
ORA-01400: 无法将 NULL 插入 ("SCOTT"."EMP"."EMPNO")

--我们把这样的异常定义一个名字(将异常名与异常编号相关联),称之为非预定义异常
--使用的基本过程
    --a.定义一个异常名 (declare)
    --b.将异常名与异常编号相关联(associate)
    --c.在异常处理部分捕捉并处理异常(reference)
declare
	e_key Exception;--定义
	pragma exception_init(e_key,-01400);--绑定关联
begin
	insert into emp(empno ) values (null);
	Exception
		when e_key
			then dbms_output.put_line('e_key');
		when others
			then dbms_output.put_line('unknow exception');
end;

--========用户自定义异常============
--自定义异常与Oracle错误没有任何关系,有开发人员为特定情况所定义的例外
--使用的基本过程
	--a.用户自定义异常必须在声明部分进行声明
	--b.当异常发生时,系统不能自动触发,需要使用Raise语句触发
	--c.在异常处理部分捕获并处理异常
	
--上述异常改成 用户自定义异常
declare
	e_key Exception ;
	empno number(4);
begin
	if empno is null 
	   then Raise e_key; --如果是null,触发异常
	end if;
	empno :=8080;
	insert into emp(empno) values (empno);
	
	Exception
		when e_key 
			then dbms_output.put_line('e_key');
	when others
		        then dbms_output.put_line('exception');
end;



 

  • 大小: 38.1 KB
  • 大小: 44.8 KB
分享到:
评论

相关推荐

    Oracle数据库plsql客户端

    Oracle数据库PL/SQL Developer客户端是数据库管理员和开发人员常用的工具,它专为Oracle数据库系统设计,提供了便捷的界面来编写、测试和调试PL/SQL代码。这个工具的强大之处在于其全面的功能集,允许用户进行数据库...

    基于oracle数据库的PLSQL编程以及存储过程的创建和使用资料.zip

    4. **PLSQL异常处理**: - 使用BEGIN...EXCEPTION...END结构来捕获和处理异常。 - 自定义异常可以使用RAISE语句抛出。 5. **存储过程**: - 存储过程是预编译的PLSQL代码块,存储在数据库中,可被多次调用。 - ...

    oracle数据库和plsql语法练习

    Oracle数据库是一种广泛应用于企业级应用的高性能关系型数据库系统,由甲骨文公司开发和维护。它支持复杂的事务处理、数据存储和管理,是许多企业的首选数据库解决方案。PL/SQL,全称Procedural Language/Structured...

    oracle 数据库 plsql 存储过程

    ### Oracle数据库PL/SQL存储过程详解 #### 一、存储过程概述 **Oracle存储过程**是一种可以在Oracle数据库中存储并可被多次调用的PL/SQL代码块。它由一系列的PL/SQL语句组成,可以包含控制流程、变量声明等,能够...

    大型数据库系统技术课程 Oracle数据库OceanBase数据库知识教程 PLSQL介绍全部课程PPT课件共12个章节.rar

    2-2-Oracle数据库知识 PLSQL介绍 共69页.ppt 3-1-Oracle数据库知识 PLSQL控制结构 共25页.ppt 4-1-异常处理 共87页.ppt 4-2-过程与函数 共62页.ppt 4-3-在PLSql中使用sql 共98页.ppt 5-1-DistributedDatabaseSystem...

    PLSQL_oracle数据库

    Oracle数据库是世界上最广泛使用的商业关系型数据库系统之一,以其稳定性、安全性和可扩展性而著称。 在"PLSQLDeveloper_win32位"中,我们关注的是一个专门用于开发PLSQL代码的集成开发环境(IDE),即PL/SQL ...

    Oracle12c数据库基础教程Oracle12c数据库PLSQL语言基础.pptx

    PL/SQL是Oracle数据库系统提供的扩展SQL语言,用于在各种环境下对Oracle数据库进行访问。 一、PL/SQL语言简介 PL/SQL是Procedure Language/Structured Query Language的缩写,它是Oracle数据库系统提供的一种程序...

    数据库oracle中PLSQL语句简介及使用方法的举例说明

    Oracle数据库中的PL/SQL(Procedural Language/Structured Query Language)是一种强大的编程语言,它将SQL的查询功能与过程式编程语言的控制结构相结合,为数据库管理提供了更高级别的抽象和控制。PL/SQL是Oracle...

    精通Oracle 10g PLSQL编程

    12. **数据库链接(DB Links)**:通过DB Links,可以在不同的Oracle数据库之间执行远程SQL和PLSQL,实现数据的跨库操作。 13. **PL/SQL内置函数**:Oracle提供大量内置函数,如数学函数、字符串函数、日期时间函数...

    大型数据库系统技术课程 2-2-Oracle数据库知识 PLSQL介绍 共69页.ppt

    结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一...PL/SQL是ORACLE在标准SQL语言上的过程性扩张,允许嵌入SQL语句,允许定义常量和变量,允许过程语言结果,允许使用异常处理ORACLE错误。

    精通Oracle10g PLSQL编程.rar

    Oracle 10g PLSQL编程是数据库管理员和开发人员必须掌握的关键技能之一。PL/SQL(Procedural Language/Structured Query Language)是Oracle数据库提供的一个编程语言,它结合了SQL的强大查询能力与过程编程的灵活性...

    Oracle数据库学习指南

    15.PLSQL异常处理初步 16.SQL语句性能调整原则 17.创建和使用分区的表 18.基于成本的优化器一般错误概念和问题 19.Delphi 3_0中连接数据库的三种方式 20.远程数据库的访问 21.监控数据库性能的SQL 22...

    plsql oracle数据库 可视化工具

    PL/SQL Developer(对应压缩包中的plsqldev715.exe)是由Allround Automations公司开发的一款专业级Oracle数据库开发工具。它支持PL/SQL编程,具有代码编辑、调试、测试、性能分析等功能。通过这个工具,你可以: 1...

    PLSQL操作大全Oracle数据库

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,而PL/SQL是Oracle专为数据库操作设计的一种过程式语言。本篇文章将深入探讨Oracle数据库与PL/SQL的使用,旨在提供一个全面的操作指南。 PL/SQL(Procedural...

    PLSQL操作ORALCE数据库

    总结来说,PLSQL是Oracle数据库编程的核心工具,结合PLSQL Developer这样的专业开发环境,可以高效地管理和操作Oracle数据库,实现各种复杂的数据处理任务。无论是初学者还是经验丰富的开发者,掌握PLSQL都是提升...

    Oracle数据库开发之PLSQL基础应用 教程

    Oracle PL/SQL是一种专为Oracle数据库设计的过程化编程语言,它是SQL的扩展,增加了更强大的控制结构和数据处理能力,适合处理复杂的业务逻辑。本文档是针对Oracle初学者的PL/SQL基础教程。 PL/SQL的基本结构是块...

    《Oracle PLSQL 从入门到精通》.zip

    Oracle PLSQL,全称为“Procedural Language/Structured Query Language”,是Oracle数据库系统中的一个强大编程语言,它结合了SQL的查询能力与过程性编程语言的功能。本资料《Oracle PLSQL 从入门到精通》旨在帮助...

    oracle数据库整体学习资料

    Oracle数据库是一种广泛应用于企业级应用的大型关系型数据库管理系统,由甲骨文公司开发和维护。这个"Oracle数据库整体学习资料"压缩包包含了多个PPT和文档,旨在为学习者提供一个全面了解和掌握Oracle数据库的资源...

    plsql连接数据库详解,包含oracle客户端,plsql客户端请到我的资源内查找。

    在"plsql连接oracle详解.docx"文档中,你可能找到关于如何配置PL/SQL Developer以连接到Oracle数据库的具体步骤,如输入服务器的TNS名称、设置用户名和密码,以及选择正确的数据库服务等。 在连接Oracle数据库时,...

    基于ORACLE数据库程序设计

    09_PL_SQL基础.ppt和10_高级PLSQL_1.ppt、11_高级PLSQL_2.ppt将涵盖PL/SQL的基本语法、控制结构、异常处理以及存储过程和函数的创建与使用。 **Oracle数据类型** 了解Oracle中的数据类型是进行有效数据库设计的关键...

Global site tag (gtag.js) - Google Analytics