- 浏览: 440844 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
陌路人丁:
SmallFish 写道同上,我也遇到了这个问题,目前还没解决 ...
Java类动态加载(一)——java源文件动态编译为class文件 -
陌路人丁:
冯程程 写道如果java源码中引用了第三方类后,动态编译会报软 ...
Java类动态加载(一)——java源文件动态编译为class文件 -
lvhejin:
Java设计模式源代码——自己看pdf写的 -
yunxi_2015:
不好用啊,查询失败
用Java解析手机号获取手机信息(归属地、Sim卡类型、移动或是联通、区号、邮编) -
zhouyicang:
我是拿来现成用的,非常感谢博主的代码,不过我给和我一样的人一个 ...
判断点与多边形的位置关系
Oracle提供了预定义例外、非预定义例外和自定义例外等三种例外类型,其中预定义例外用于常见的Oracle错误;非预定义例外则用于预定义例外所不能处理的错误;自定义例外用于处理与Oracle错误无关的其他情况
1、例外的格式
2、处理预定义列外
预定义例外是指有pl/sql所提供的系统例外。当pl/sql应用程序违反了Oracle规则或者系统限制时,则会隐含的触发一个内部例外。pl/sql为开发人员提供了大概20多个例外,每个例外都对应一个Oracle系统错误。
1)常用预定义例外
access_into_null 对应于ORA-06530,没有初始化对象就直接给对象赋值
case_not_found 对应于ORA-06592,当在pl/sql块中编写case语句时,如果在when子句中没有包含必须的条件分支,并前没有包含else子句,就会隐含地厨房case_not_fount例外
collection_is_null 对应于ORA-06531,在给集合元素赋值前,必须初始化集合元素。如果没有初始化集合元素,则会隐含地触发collection_is_null
cursor_already_open 对应于OR-06511,当重新打开已经打开的游标时,会触发该例外。如果用户已经使用open命令打开了现实游标,并执行游标for循环时,就会隐含地触犯该例外,因为游标for循环会隐含地打开游标。
dup_val_on_index 对应于ORA-001,当在唯一索引所对应的列上插入重复值,就会隐含地触发该例外,比较常见的情况就是主键冲突,也就是插入重复的主键。
invalid_cursor 对应于ORA-01001,当试图在不合法的游标上执行操作时,就会隐含地触发该例外,例如,如果要从未打开的游标中提取数据,或者关闭未打开的游标时,就会触发该例外。
invalid_number 对应于ORA-01722,当内嵌的sql语句不能将有效的字符转换为数字时,会隐含地触发该例外。
no_data_found 对应于ORA-01403,当执行select into时未返回行,或者引用了索引表未初始化的元素时,会触发该例外
too_many_rows 对应于ORA-01422,当查询单行记录时,返回多行记录就会触发该例外。
zero_divide 对应于ORA-01476,如果用数字值除0时,会隐含触发该例外。
subscript_beyond_count 对应于ORA-06533,当使用嵌套表或变长数组varray元素时,下标超出范围时,则会隐含地触发该例外。
subscript_outside_limit 对应于ORA-06532,当使用嵌套表和变长数组时,如果元素下表为负或者为0时,会触发该例外
value_error 对应于ORA-06502,当在执行赋值操作时,如果变量长度不足以容纳实际数据时,则会隐含地触发该例外.
其他预定义例外
1、login_denied 对应于ora-01017错误,当用户链接oracle数据库时,如果提供了不正确的用户名或口令,则会触发该例外
2、not_logged_on 对应于ora-01012错误,如果应用程序没有链接到oracle数据库,那么在执行pl/sql块中访问数据库时,会触发该例外。
3、program_error 对应于ora-06501错误,表示存在pl/sql内部问题,用户此时可能要重新安装数据字典和pl/sql系统包
4、rowtype mismatch 对应于ora-06504错误,当执行赋值操作时,如果宿主游标变量和pl/sql游标变量的返回类型不兼容,会触发该例外。
5、self_is_null 对应于ora-30625错误,当使用对象类型时,如果在null实例上调用成员方法,会触发该实例。
6、storage_error 对应于ora-06500错误,当pl/sql块运行时,如果超出内存空间或者内存被损坏,会触发该例外。
7、sys_invalid_rowid 对应于ora-01410错误,当将字符串转变为rowid时,必须使用有效的字符串,如果使用的无效的字符串,会触发该例外。
8、timeout_on_resource 对应于ora-00051错误,如果oracle在等待资源时,出现超时错误,会触发该例外
1、例外的格式
declare v_name communitytype.name%type; begin select name into v_name from communitytype where community_type_id = 'ebook'; dbms_output.put_line(v_name); --捕捉异常 exception when too_many_rows then dbms_output.put_line('查询只能返回单行'); when no_data_found then dbms_output.put_line('没有找到任何记录'); when others then dbms_output.put_line('查询出现异常'); end;
2、处理预定义列外
预定义例外是指有pl/sql所提供的系统例外。当pl/sql应用程序违反了Oracle规则或者系统限制时,则会隐含的触发一个内部例外。pl/sql为开发人员提供了大概20多个例外,每个例外都对应一个Oracle系统错误。
1)常用预定义例外
access_into_null 对应于ORA-06530,没有初始化对象就直接给对象赋值
case_not_found 对应于ORA-06592,当在pl/sql块中编写case语句时,如果在when子句中没有包含必须的条件分支,并前没有包含else子句,就会隐含地厨房case_not_fount例外
declare v_name communitytype.name%type; begin select name into v_name from communitytype t where t.community_type_id = 'ebook'; case when v_name = '123' then dbms_output.put_line('name为123'); end case; exception when case_not_found then dbms_output.put_line('没有将所有情况考虑完全'); end;
没有将所有情况考虑完全
collection_is_null 对应于ORA-06531,在给集合元素赋值前,必须初始化集合元素。如果没有初始化集合元素,则会隐含地触发collection_is_null
declare --集合类型(索引表) type ename_table_type is table of communitytype.name%type; ename_table ename_table_type; begin select name into ename_table(1) from communitytype where community_type_id = 'ebook'; dbms_output.put_line(ename_table(1)); exception when collection_is_null then dbms_output.put_line('集合类型没有初始化'); end;
集合类型没有初始化
cursor_already_open 对应于OR-06511,当重新打开已经打开的游标时,会触发该例外。如果用户已经使用open命令打开了现实游标,并执行游标for循环时,就会隐含地触犯该例外,因为游标for循环会隐含地打开游标。
declare cursor emp_cursor is select name from communitytype; begin open emp_cursor; for emp_record in emp_cursor loop dbms_output.put_line(emp_record.name); end loop; exception when cursor_already_open then dbms_output.put_line('游标已经打开'); end;
游标已经打开
dup_val_on_index 对应于ORA-001,当在唯一索引所对应的列上插入重复值,就会隐含地触发该例外,比较常见的情况就是主键冲突,也就是插入重复的主键。
invalid_cursor 对应于ORA-01001,当试图在不合法的游标上执行操作时,就会隐含地触发该例外,例如,如果要从未打开的游标中提取数据,或者关闭未打开的游标时,就会触发该例外。
declare cursor emp_cursor is select name from communitytype; emp_record emp_cursor%rowtype; begin fetch emp_cursor into emp_record; close emp_cursor; exception when invalid_cursor then dbms_output.put_line('关闭还没有打开的游标,抛出异常'); end;
关闭还没有打开的游标,抛出异常
invalid_number 对应于ORA-01722,当内嵌的sql语句不能将有效的字符转换为数字时,会隐含地触发该例外。
declare v_number int; begin select 1+'1OO' into v_number from dual; exception when invalid_number then dbms_output.put_line('不能有效地将字符转换为数字'); end;
不能有效地将字符转换为数字
no_data_found 对应于ORA-01403,当执行select into时未返回行,或者引用了索引表未初始化的元素时,会触发该例外
too_many_rows 对应于ORA-01422,当查询单行记录时,返回多行记录就会触发该例外。
zero_divide 对应于ORA-01476,如果用数字值除0时,会隐含触发该例外。
subscript_beyond_count 对应于ORA-06533,当使用嵌套表或变长数组varray元素时,下标超出范围时,则会隐含地触发该例外。
declare type emp_array_type is varray(20) of varchar2(10); emp_array emp_array_type; begin emp_array:=emp_array_type('郑田','胡杰'); --变长数组下标从1开始 dbms_output.put_line(emp_array(3)); exception when subscript_beyond_count then dbms_output.put_line('数组越界,超出下标'); end;
数组越界,超出下标
subscript_outside_limit 对应于ORA-06532,当使用嵌套表和变长数组时,如果元素下表为负或者为0时,会触发该例外
declare type emp_array_type is varray(20) of varchar2(10); emp_array emp_array_type; begin emp_array:=emp_array_type('郑田','胡杰'); --变长数组下标从1开始 dbms_output.put_line(emp_array(0)); exception when subscript_outside_limit then dbms_output.put_line('数据表和变长数组下标不能为负'); end;
数据表和变长数组下标不能为负
value_error 对应于ORA-06502,当在执行赋值操作时,如果变量长度不足以容纳实际数据时,则会隐含地触发该例外.
declare v_ename varchar2(5); begin select name into v_ename from communitytype where community_type_id = 'ebook'; exception when value_error then dbms_output.put_line('变量尺寸不足'); end;
变量尺寸不足
其他预定义例外
1、login_denied 对应于ora-01017错误,当用户链接oracle数据库时,如果提供了不正确的用户名或口令,则会触发该例外
2、not_logged_on 对应于ora-01012错误,如果应用程序没有链接到oracle数据库,那么在执行pl/sql块中访问数据库时,会触发该例外。
3、program_error 对应于ora-06501错误,表示存在pl/sql内部问题,用户此时可能要重新安装数据字典和pl/sql系统包
4、rowtype mismatch 对应于ora-06504错误,当执行赋值操作时,如果宿主游标变量和pl/sql游标变量的返回类型不兼容,会触发该例外。
5、self_is_null 对应于ora-30625错误,当使用对象类型时,如果在null实例上调用成员方法,会触发该实例。
6、storage_error 对应于ora-06500错误,当pl/sql块运行时,如果超出内存空间或者内存被损坏,会触发该例外。
7、sys_invalid_rowid 对应于ora-01410错误,当将字符串转变为rowid时,必须使用有效的字符串,如果使用的无效的字符串,会触发该例外。
8、timeout_on_resource 对应于ora-00051错误,如果oracle在等待资源时,出现超时错误,会触发该例外
发表评论
-
Oracle 10g数据库游标的使用学习三(实践)
2012-12-20 19:18 1127需求说明 S132877699668612为服务模板ID,每一 ... -
Oracle 10g数据库游标的使用学习二
2012-12-11 18:32 1132游标格式: CURSOR cursor_name[(param ... -
一条sql同时实现更新和插入
2011-05-04 16:44 2098用一条sql语句同时实现更新和插入 MERGE INTO ... -
Oracle常用分页语句性能比较
2011-05-04 15:31 1710分页一: select b.* from ( se ... -
Oracle性能调优——Oracle性能调优原则(一)
2011-04-01 09:40 1432Oracle性能调优原则 任何 ... -
Oracle学习——循环与控制语句
2011-03-10 10:14 1135一、if elsif else循环 --注意 elsif ... -
Oracle学习——块结构
2011-03-10 09:32 994PL/SQL程序可以划分为块的机构,每一个块都包含有PL/SQ ... -
Oracle层次关系查询
2011-02-14 10:00 1514原文链接:http://www.examd ... -
项目实战应用——根据父资源库分类属性修改子资源库分类的属性
2011-01-07 11:26 905整体要求: 1、先查询 ... -
Oracle 10g触发器学习一
2010-12-10 08:56 2026可能不是很多人知道 RAISE_APPLICATION_ERR ... -
Oracle 10g管理存储过程——查询数据库中的视图、存储过程、函数
2010-12-08 09:21 2791数据库字典视图user_objects用于显示当前用户包含的所 ... -
Oracle 10g创建函数——带输入、输出参数
2010-12-07 09:15 3626--Oracle10g 开发函数 --1、建立不带参数的函数 ... -
Oracle 10g存储过程学习二——为参数传递变量和数据
2010-12-01 09:12 2024--在创建存储过程时,为参数传递变量和数据 create ... -
Oracle 10g存储过程学习一
2010-11-30 08:58 2077--1、创建存储过程(无参数) create or rep ... -
Oracle 10g处理例外(即sql异常)学习二——自定义例外和非预定义例外
2010-11-27 14:25 1748--处理非预定义例外 --非预定义例外用于处理与预定义例外无关 ... -
Oracle 10g如何对用户姓名,按首字母排序、查询
2010-11-20 11:20 4091首先介绍Oracle 9i新增加的一个系统自带的排序函数 1、 ... -
Oracle 10g使用游标更新或删除数据
2010-11-19 08:34 9021在定义又表示必须要带 ... -
Oracle 10g数据库游标的使用学习一
2010-11-17 09:22 1306--使用游标 1)9i以前的使用方法,一次取一条数据 --1、 ... -
Oracle 10g复合数据类型pl/sql集合学习六——索引表、嵌套表、变长数组
2010-11-12 09:19 2031--Oracle 10g复合数据类型pl/sql集合,集合又可 ... -
Oracle 10g数据库被锁记录的查询与解锁
2010-11-12 08:52 2669--1、查询出被锁的情况: SELECT OBJECT_ ...
相关推荐
Oracle 8的基础对服务器编程主要涉及的是Oracle的PL/SQL编程语言,这是一种强大的过程化语言,用于构建与Oracle数据库交互的应用程序。以下是对PL/SQL语言基础的详细说明: 1. **PL/SQL语言结构**: - **程序块**...
- **处理预定义例外**:处理Oracle预先定义好的异常。 - **非预定义例外**:自定义异常的处理。 ### Oracle的视图 这部分介绍了Oracle中的视图概念及其使用方法。 通过以上内容,可以了解到Oracle数据库的强大功能...
2. oracle11G自带一个卸载批处理\app\Administrator\product\11.2.0\dbhome_1\deinstall\deinstall.bat 3. 运行该批处理程序将自动完成oracle卸载工作,最后手动删除\app文件夹(可能需要重启才能删除) 4. 运行...
### 韩顺平Oracle视频笔记知识点概览 #### 1. Oracle 用户管理 - **概念**:在Oracle数据库中,用户是用来管理访问权限的基本单位。每个用户都可以有自己的模式(schema),其中包含各种对象如表、视图等。 - **创建...
- **安装过程**:安装Oracle时会自动生成两个预定义的账户——`sys`和`system`。`sys`用户是超级用户,具有最高的权限,包括创建数据库的能力;而`system`用户虽然权限也很高,但不包含创建数据库的权限。 #### 二...
Oracle推荐了一种优化结构——OFA(Optimal Flexible Architecture),旨在简化数据库物理设计中的数据管理过程。通过OFA,可以高效自由地分布数据库中的逻辑数据对象。 **具体步骤包括:** 1. **分类逻辑对象**:...
5. **数据绑定**:ASP.NET的数据绑定机制使得动态显示和操作数据库数据变得简单,可以方便地与各种数据源如SQL Server、Oracle等进行交互。 JumbotCms 3.2是基于ASP.NET构建的内容管理系统,其特点可能包括: 1. *...
东南大学作为一所知名学府,其教学资源通常严谨且全面,这门课程也不例外。 数据库的基础部分涵盖了以下几个关键知识点: 1. **数据库概念**:了解什么是数据库,它的功能和类型,如关系型数据库(如MySQL、Oracle...
学习如何使用try-catch-finally语句块来捕获和处理异常,以及不同类型的异常类,如IOException、NullPointerException等,能帮助我们编写出更稳定的应用。 3. **集合框架**: Java集合框架包括List、Set、Map接口...
5. **丰富的组件库**:FireMonkey包含一系列预定义的UI组件,如按钮、列表视图、表格等,以及用于处理数据、网络和多媒体的组件。 **Delphi XE2的其他特性** 1. **集成的IDE**:Delphi XE2的集成开发环境提供了代码...
本文将详细介绍一种无需安装完整Oracle客户端即可连接Oracle数据库的方法——通过配置PL/SQL Developer来实现免客户端连接。 #### 二、免客户端连接PL/SQL方法 **1. 准备工作** - **下载Instant Client文件** - ...
《足球样本管理系统——Java与SQL数据库的深度融合》 在当今数字化时代,管理系统已经渗透到各行各业,其中体育领域的管理也不例外。本项目"footballSample管理系统"正是这样一款专为足球管理定制的系统,它采用...
在Java Web开发中,Spring MVC框架常被用来构建这一层,它提供了强大的路由、依赖注入和异常处理能力。 为了实现数据持久化,ums可能使用了关系型数据库,如MySQL或Oracle。在Java中,JDBC(Java Database ...
MySQL以其轻量级和高效的特点常用于中小型项目,SQL Server适合大型企业环境,而Oracle则以其强大的数据处理能力和企业级特性受到青睐。用户可以根据实际需求和硬件条件选择合适的数据库,只需在配置文件中进行简单...
它支持多种数据库管理系统(DBMS),如MySQL、Oracle、SQL Server、PostgreSQL等,涵盖了关系型数据库和非关系型数据库,满足了用户对多样化数据库环境的需求。通过提供统一的界面,用户可以方便地进行数据查询、表...
常见的关系型数据库如MySQL、SQL Server和Oracle都支持BLOB类型字段,用于存储大量的非结构化数据,如图片、音频或视频。在本系统中,图片的二进制数据会被存储在一个专门设计的表中,包含图片ID、用户ID、图片名称...