Oracle PL/SQL编程基础:执行SQL与处理异常

需积分: 11 1 下载量 146 浏览量 更新于2024-09-12 收藏 21KB TXT 举报
"本章节主要介绍了PLSQL编程基础,包括最简单的PL/SQL块、在PL/SQL中执行SQL语句以及处理DML语句的方法。通过示例代码展示了如何编写匿名块、声明变量、处理查询结果以及异常处理。" 在PL/SQL(Procedural Language/Structured Query Language)中,我们可以将SQL语句与过程式编程语法结合起来,创建更复杂的数据库操作。10.1节首先介绍了PL/SQL的基本结构,即匿名块。一个最简单的匿名块通常由`BEGIN`、`END;`以及可能包含的`DECLARE`子句组成,用于声明变量和游标。 10.1.1 节展示了如何编写一个基本的匿名块,其中包含`DBMS_OUTPUT.PUT_LINE`函数用于在服务器控制台上输出文本。例如: ```sql SET SERVEROUTPUT ON BEGIN DBMS_OUTPUT.PUT_LINE('This is a minimum anonymous block'); END; / ``` 10.1.2 节进一步扩展了这个概念,演示了如何在匿名块中执行SQL的`SELECT INTO`语句来获取数据,并将结果存储到变量中,然后输出: ```sql DECLARE v_sname VARCHAR2(10); BEGIN SELECT name INTO v_sname FROM Students WHERE student_id = 10318; DBMS_OUTPUT.PUT_LINE('Student ' || v_sname); END; / ``` 10.1.3 节引入了异常处理,当没有数据匹配`SELECT INTO`语句时,会触发`NO_DATA_FOUND`异常。通过`EXCEPTION`块可以捕获并处理这种异常,例如: ```sql DECLARE v_sname VARCHAR2(10); BEGIN SELECT name INTO v_sname FROM Students WHERE student_id = &student_id; DBMS_OUTPUT.PUT_LINE('Student ' || v_sname); EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('Student not found'); END; / ``` 10.2 节讨论了在PL/SQL中执行SQL语句,特别是`SELECT`语句。10.2.1 节中,展示了如何将`SELECT`查询的结果存储到变量中,这里使用了类型 `%TYPE` 来确保变量与表列的类型一致: ```sql DECLARE v_id Departments.department_id%type; v_name Departments.department_name%type; v_address Departments.address%type; BEGIN SELECT id, name, address INTO v_id, v_name, v_address FROM Departments WHERE department_id = 101; DBMS_OUTPUT.PUT_LINE('Department Name: ' || v_name); DBMS_OUTPUT.PUT_LINE('Department Address: ' || v_address); END; / ``` 10.2.2 节则展示了如何使用`%ROWTYPE`,将整个行记录赋值给一个变量,这样可以方便地访问记录中的所有字段: ```sql DECLARE v_student Students%ROWTYPE; BEGIN SELECT * INTO v_student FROM Students WHERE student_id = 10212; DBMS_OUTPUT.PUT_LINE('Student Info:'); DBMS_OUTPUT.PUT_LINE(v_student.name || ', ' || v_student.sex || ', ' || v_student.age); END; / ``` 通过这些例子,我们可以看到PL/SQL如何提供了一种强大的方式,不仅能够执行SQL查询,还能结合流程控制和异常处理,实现更复杂的数据库应用程序逻辑。