PL/SQL基础教程:从查询到操纵数据

需积分: 16 0 下载量 142 浏览量 更新于2024-07-26 收藏 457KB DOC 举报
"PLSQL语言学习笔记" 这篇笔记主要介绍了PL/SQL的基本概念和操作,PL/SQL是Oracle数据库中的过程化语言,它结合了SQL的查询能力与编程语言的控制结构。以下是对笔记内容的详细解析: 1. PL/SQL块的结构与限制 PL/SQL块是PL/SQL的基本组成部分,它可以包含声明、执行和异常处理部分。在这个笔记中,作者指出PL/SQL块不能直接包含DDL(创建、修改、删除)和DCL(权限授予、撤销)语句,这些需要在PL/SQL外部执行。相反,PL/SQL块可以直接使用SELECT、DML(插入、更新、删除)和事务控制语句。 2. 检索单行数据 - **使用标量变量**:你可以声明与表列类型匹配的变量,如`v_ename`和`v_sal`,然后通过`SELECT INTO`从表中选取单行数据到这些变量。 - **使用记录变量**:记录变量可以存储多列数据,如`emp_record_type`定义了一个记录类型,包含`ename`和`sal`两个字段。同样使用`SELECT INTO`将数据填充到记录变量中。 3. 嵌入SELECT语句的注意事项 - **单行数据返回**:`SELECT INTO`必须返回且只能返回一条数据,否则会抛出错误。`NO_DATA_FOUND`表示没有找到匹配的数据,`TOO_MANY_ROWS`表示返回了多条数据。 - **避免列名与变量名冲突**:在`WHERE`子句中,避免使用与列名相同的变量名,以免引发`TOO_MANY_ROWS`异常。 4. 操纵数据 - **使用VALUES子句插入数据**:通过声明变量`v_deptno`和`v_dname`,然后使用`VALUES`子句将它们的值插入到`dept`表中。 - **使用子查询插入数据**:通过子查询`SELECT * FROM emp WHERE deptno = v_deptno`,将满足条件的行插入到另一个表,这里假设是`employee`表。 - **更新数据**:更新`dept`表中的`loc`列,使用表达式`v_loc`,并根据`deptno`筛选需要更新的行。 5. 删除数据 笔记中提到的第2.4点是关于删除数据的,但没有提供完整的信息。通常,删除数据使用`DELETE`语句,如`DELETE FROM table_name WHERE condition`。 6. 事务控制 笔记中虽然没有具体讲解,但在PL/SQL中,`COMMIT`用于提交事务,`ROLLBACK`用于回滚事务,`SAVEPOINT`用于设置保存点,可以在发生错误时恢复到某个点。 7. 异常处理 PL/SQL支持异常处理,允许你在遇到错误时执行特定的代码块。这通常通过`BEGIN...EXCEPTION`块来实现,其中`EXCEPTION`部分可以捕获并处理特定的错误。 8. 存储过程和函数 PL/SQL还支持创建存储过程和函数,它们可以封装复杂的业务逻辑,提高代码复用和数据库性能。 通过这篇笔记,读者可以对PL/SQL的基础操作有一个初步的理解,包括如何检索和操纵数据,以及如何处理事务和异常。然而,更深入的学习可能需要查看Oracle的官方文档或参加专门的PL/SQL培训课程。