Oracle教程第五篇:游标与存储过程

本文详细介绍了Oracle数据库中的游标概念、使用示例和简化版操作,探讨了事务处理的重要性,异常处理机制以及自定义异常。深入讲解了存储过程的创建与调用,并给出了存储函数的示例。还讨论了多返回值存储过程的实现及注意事项,展示了Java如何调用存储过程。最后,通过综合示例展示了如何结合游标进行分页查询,以及触发器的应用,包括触发器类型和实际场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、游标

1.简介

oracle 读取数据的工具,类似java集合。

2.示例

DECLART 
	-- 获取班级集合
	CURSOR  EMPLIST  IS SELECT * FROM EMP ;
	-- 定义emp 表的对象 进行解析
	V_EMPOBJ  EMP%ROWTYPE;
BEGIN
	-- 解析游标(集合)
	-- 1. 打开游标。
	OPEN  EMPLIST;
	LOOP
		EXIT WHEN EMPLIST%NOTFOUND
		FETCH EMPLIST  INTO V_EMPOBJ;
		dbms_output.put_line(v_empobj.empno||v_empobj.ename);
	END LOOP;
	-- 2. 关闭游标
	CLOSE  EMPLIST;
END 

3.简化版

DECLARE 
	CURSOR  GLIST  IS SELECT * FROM GRADE;
BEGIN
	FOR g IN GLIST  LOOP
	dbms_output.put_line(g.gid);
END  LOOP;
END

二、事务

1.一个程序是否健壮,主要看异常处理机制

2.异常

  1. oracle 一共定义有2万个错误。
  2. 预定义错误 弹窗 终止程序运行。
  3. 处理异常。
EXCEPTION  
WHEN
	TOO_MANY_ROWS
THEN 
	dbms_output.put_line('返回条数过多,不能赋值');
WHEN
	NO_DATA_FOUND
THEN
	dbms_output.put_line('要查找的数据不存在');
  1. 自定义异常。
-- 如果有员工工资小于1000 抛出异常提示。
DECLARE 
	CURSOR  emplist  IS SELECT  *  FROM  EMP ;
	-- 1. 定义异常
	SAL_TOO_LOW   EXCEPTION;
BEGIN
	FOR  e  IN  emplist  LOOP
		IF   e.sal  <  1000  THEN
			-- 2. 引发异常
			RAISE   SAL_TOO_LOW;
		END  IF;
	END LOOP;
-- 3. 接收并处理异常
	EXCEPTION
	WHEN  SAL_TOO_LOW  THEN
		dbms_output.put_line('有员工工资太低');
		raise_application_error(-20001,'工资过低,请及时涨工资');
		//错误信息标号 必须小于 -20000
END
  1. 其他异常
    所有未拦截的异常都应该被others接收
WHEN  OTHERS   THEN
	dbms_output.put_line('所有未拦截的异常');

空白R拦截顺序

先是预定义    再是自定义     最后是others

三、存储过程

存储过程是一个有名字的 plsql 块

1. 示例

//-->根据员工编号给指定员工涨工资,并打印相关信息。

create  or  replace  procedure  updateempbyempno(
	eno    emp.empno%type  //没有;
) as 
	--声明变量的地方
	a_sal     emp.sal%type ;  --涨工资之前
	b_sal     emp.sal%type;--涨工资之后
begin
	select sal  into a_sal  from emp  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值