oracle中pl/sql编程(六)

本文介绍Oracle数据库中PL/SQL编程的例外处理机制,包括预定义例外、非预定义例外和自定义例外的使用,并通过具体案例进行说明。此外,还介绍了视图的概念、特点及创建方法。
oracle中pl/sql编程(六):


oracle中的例外处理:


例外的分类:
a)预定义例外:用于处理常见的oralce错误(系统自带的例外)
b)非预定义例外:用于处理预定义例外不能处理的例外
c)自定义例外:用于处理与oracle错误无关的其他情况




--例外案例(预定义例外案例)





declare
--定义
v_ename emp.ename%type;
begin
select ename into v_ename from emp where empno=&aa;
dbms_output.put_line('用户名为:'||v_ename);
exception
     when no_data_found then
     dbms_output.put_line('你输入的编号不存在,请重新输入!');
end;


在这里着重讲一些预定义例外的种类(只讲常用的几个):



a) case_not_found:如果在when子句中没有包含必须的条件分支,就会触发case_not_found


b) cursor_already_open:当重新打开已经打开的游标时,会隐含的触发例外cursor_already_open


c) dup_val_on_index:在唯一索引所对应的列上插入重复的值时,会隐含的触发例外dup_val_on_index例外


d)invaild_cursor:当视图在不合法的游标上执行操作时:会触发该例外


例如:试图从没有打开的游标提取数据,或是关闭没有打开的游标,则会触发该例外等等


e)invalid_number:当输入的数据有误时,会触发该例外


比如:数字100写成了loo(字符串)就会触发该例外


f)too_many_rows:(举例说明)当执行select into 语句时,如果返回超过了一行,则会触发该例外


g)zero_divide:(举例说明)当执行2/0语句时,则会触发该例外


h)value_error:(举例说明)当在执行赋值操作时,如果变量的长度不足以容纳实际数据,
则会触发该例外value_error






下面提一下其他的预定义例外:


a)login_denide:当用户非法登录时,会触发该例外


b)not_logged_on:如果用户没有登录就执行dml操作,就会触发该例外


c)storage_error:如果超出了内存空间或是内存被损坏,就触发该例外


d)timeout_on_resource:如果oracle在等待资源时,出现了超时就触发该例外












--自定义例外(重点)


create or replace procedure Lw(spNo number) 
is
--定义一个例外
mytx exception;
begin
update emp set sal = sal +1000 where empno=spNo;
--sql%notfound 代表sql语句没有找到对应的结果,比如这里的
--update就没有找到(注意这里如果是select的话,那么有预定义例外,不需要自定义)
if sql%notfound then
---raise mytx 代表触发mytx
raise mytx;
end if;
exception
when mytx  then
dbms_output.put_line('输入的编号有误,没有任何雇员薪水更新成功!'); 
end;




oracle中的视图:
什么是视图?
1.视图是一种数据库对象,是从一个或者多个数据表或视图中导出的虚表,视图并不在数据库中以存储的数据值形式存在,而是存储在所引用的数据表中,视图的结构和数据是对数据表进行查询的结果。
2.根据创建视图时给定的条件,视图可以是一个数据表的一部分,也可以是多个基表的联合,它存储了要执行检索的查询语句的定义,以便在引用该视图时使用。


视图和表的区别:
1.表需要占用磁盘空间,视图不需要


2.视图不能添加索引,表可以


3.使用视图可以简化复杂的查询  比如:学生选课系统


4.视图有利于提高安全性 比如:不同用户查看不同的视图




创建视图:
create view 视图名 as select 语句(sql)  [with read only](加上了后面这段代码就代表视图只可以读,不可以做其他操作)


如:
create view  myview as select * from emp where sal<1000;


创建或者修改视图:create view 视图名 as select 语句(sql)  [with read only]


删除视图:


drop view 视图名

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弗兰随风小欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值