- 浏览: 433953 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
陌路人丁:
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 1058需求说明 S132877699668612为服务模板ID,每一 ... -
Oracle 10g数据库游标的使用学习二
2012-12-11 18:32 1086游标格式: CURSOR cursor_name[(param ... -
一条sql同时实现更新和插入
2011-05-04 16:44 2040用一条sql语句同时实现更新和插入 MERGE INTO ... -
Oracle常用分页语句性能比较
2011-05-04 15:31 1640分页一: select b.* from ( se ... -
Oracle性能调优——Oracle性能调优原则(一)
2011-04-01 09:40 1405Oracle性能调优原则 任何 ... -
Oracle学习——循环与控制语句
2011-03-10 10:14 1095一、if elsif else循环 --注意 elsif ... -
Oracle学习——块结构
2011-03-10 09:32 965PL/SQL程序可以划分为块的机构,每一个块都包含有PL/SQ ... -
Oracle层次关系查询
2011-02-14 10:00 1446原文链接:http://www.examd ... -
项目实战应用——根据父资源库分类属性修改子资源库分类的属性
2011-01-07 11:26 858整体要求: 1、先查询 ... -
Oracle 10g触发器学习一
2010-12-10 08:56 1984可能不是很多人知道 RAISE_APPLICATION_ERR ... -
Oracle 10g管理存储过程——查询数据库中的视图、存储过程、函数
2010-12-08 09:21 2728数据库字典视图user_objects用于显示当前用户包含的所 ... -
Oracle 10g创建函数——带输入、输出参数
2010-12-07 09:15 3578--Oracle10g 开发函数 --1、建立不带参数的函数 ... -
Oracle 10g存储过程学习二——为参数传递变量和数据
2010-12-01 09:12 2000--在创建存储过程时,为参数传递变量和数据 create ... -
Oracle 10g存储过程学习一
2010-11-30 08:58 2045--1、创建存储过程(无参数) create or rep ... -
Oracle 10g处理例外(即sql异常)学习二——自定义例外和非预定义例外
2010-11-27 14:25 1710--处理非预定义例外 --非预定义例外用于处理与预定义例外无关 ... -
Oracle 10g如何对用户姓名,按首字母排序、查询
2010-11-20 11:20 4005首先介绍Oracle 9i新增加的一个系统自带的排序函数 1、 ... -
Oracle 10g使用游标更新或删除数据
2010-11-19 08:34 8944在定义又表示必须要带 ... -
Oracle 10g数据库游标的使用学习一
2010-11-17 09:22 1265--使用游标 1)9i以前的使用方法,一次取一条数据 --1、 ... -
Oracle 10g复合数据类型pl/sql集合学习六——索引表、嵌套表、变长数组
2010-11-12 09:19 1984--Oracle 10g复合数据类型pl/sql集合,集合又可 ... -
Oracle 10g数据库被锁记录的查询与解锁
2010-11-12 08:52 2612--1、查询出被锁的情况: SELECT OBJECT_ ...
相关推荐
Oracle.10g.Pl.SQL编程Oracle.10g.Pl.SQL编程Oracle.10g.Pl.SQL编程Oracle.10g.Pl.SQL编程Oracle.10g.Pl.SQL编程Oracle.10g.Pl.SQL编程Oracle.10g.Pl.SQL编程Oracle.10g.Pl.SQL编程Oracle.10g.Pl.SQL编程Oracle.10g....
oracle10g pl/sql完备教程,供初学者学习与开发者参考
Oracle 10g SQL PL/SQL 数据库学习必备!
本文详细描述了在oracle10g或11g中使用dblink访问sql server,使用oracle的透明网关来访问异构的数据库,方便一些习惯使用oracle的开发人员操作sql server数据库
Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一) http://download.csdn.net/source/3268267 Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二) ...
很好的oracle 10g培训的资料,很精辟,这是SQL的第一部分
oracle10g_连接sql_server
Oracle Database 11g Introduction to SQL 简介SQL PL/SQL
通过学习《精通Oracle 10g SQL和PL/SQL》,读者不仅可以掌握SQL和PL/SQL的基础知识,而且还可以掌握SQL高级特征(正则表达式、Flashback查询、MERGE语句、SQL:1999连接)和PL/SQL高级特征(记录类型、集合类型、对象...
很好的oracle 10g培训资料,这是SQL的第二部分
参加ocp培训师我们老师给我的学习笔记,是他学习oracle sql时总结的精华,很适合初学者学习使用
本书是专门为oracle开发人员而提供的编程指南 通过学习本书 读者不仅可以掌握编写sql语句和pl/sql块的基础知识 而且还可以掌握sql高级特征 正则表达式 flashback查询 merge语句 sql:1999连接 和pl/sql高级特征 ...
Oracle 10g的“数据闪回”机制——Oracle 10g系列专栏(一).pdf
第1章 Oracle Database 10g体系结构 第2章 安装Oracle Database 10g和创建数据库 第3章 升级到Oracle Database 10g 第4章 规划Oracle应用程序——方法、风险和标准 第Ⅱ部分 SQL和SQL*Plus 第5章 SQL中的基本语法 第...
通过学习本书,读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法,而且可以掌握sql语句和pl/sql的各种基础知识和高级特征(记录...
Oracle 10g 的操作命令大全数据库的建立以及操作 表的操作,查询等,plsql的说明以及全部常用的命令。很全的。
Oracle SQL Reference.pdf
Oracle 10g连接sqlserver2000操作指南
Oracle——sql语句优化
Oracle 10g中的高级SQL函数,开发中很有用