Oracle PL/SQL异常与循环处理实战

需积分: 9 0 下载量 34 浏览量 更新于2024-07-07 收藏 2.51MB DOCX 举报
"orcl复习资料.docx" Oracle数据库是企业级关系型数据库管理系统,它包含了许多高级特性,如PL/SQL编程语言、异常处理、循环结构等。在Oracle的复习资料中,主要涉及了两个核心知识点:循环和异常处理。 一、循环 循环在PL/SQL中用于重复执行一段代码,直到满足特定条件为止。文档中提到了三种类型的循环:简单LOOP循环、WHILE循环和FOR循环。以下是对这三种循环的详细说明: 1. 简单LOOP循环: 简单LOOP循环是最基础的形式,它会一直执行循环体内的代码,直到遇到EXIT或END LOOP语句。例如: ```sql DECLARE i NUMBER := 1; BEGIN LOOP DBMS_OUTPUT.PUT_LINE(i); i := i + 1; EXIT WHEN i > 10; END LOOP; END; ``` 2. WHILE循环: WHILE循环在满足指定条件时执行循环体,当条件不再满足时退出循环。例如: ```sql DECLARE i NUMBER := 1; BEGIN WHILE i <= 10 LOOP DBMS_OUTPUT.PUT_LINE(i); i := i + 1; END LOOP; END; ``` 3. FOR循环: FOR循环常用于遍历集合或序列。它有固定的开始、结束和递增/递减步骤。例如: ```sql DECLARE TYPE num_tab IS TABLE OF NUMBER INDEX BY PLS_INTEGER; arr num_tab; BEGIN FOR i IN 1..10 LOOP arr(i) := i; DBMS_OUTPUT.PUT_LINE(arr(i)); END LOOP; END; ``` 二、异常处理 异常处理是PL/SQL中的一个重要概念,它允许程序员捕获和处理运行时错误。文档中展示了两种类型的异常处理: 1. 自定义异常: 开发者可以定义自己的异常类型,当特定情况发生时触发。例如,定义一个表示工资过低的异常`e_little`: ```sql DECLARE e_little EXCEPTION; v_empno EMP.EMPNO%TYPE := &EMPNO; v_ename EMP.ENAME%TYPE; v_sal EMP.SAL%TYPE; BEGIN SELECT ename, sal INTO v_ename, v_sal FROM emp WHERE empno = v_empno; IF v_sal < 1800 THEN RAISE e_little; ELSE DBMS_OUTPUT.PUT_LINE('员工姓名:' || v_ename || ', 工资:' || v_sal); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('查无此人'); WHEN e_little THEN DBMS_OUTPUT.PUT_LINE('工资太低,需要涨工资'); END; ``` 2. 系统预定义异常: Oracle提供了一系列预定义的异常,如`NO_DATA_FOUND`,在查询中未找到数据时自动触发。在上述示例中,如果未找到对应员工,就会捕获到`NO_DATA_FOUND`异常并输出相应信息。 通过熟练掌握这些循环结构和异常处理机制,可以编写出健壮、易于维护的PL/SQL程序,有效应对数据库操作中可能出现的各种情况。在实际的Oracle开发中,理解并灵活运用这些概念至关重要。