PL/SQL精要整理:数据操作与查询技巧

需积分: 3 4 下载量 103 浏览量 更新于2024-07-30 收藏 458KB DOC 举报
"PLSQL笔记精华,个人整理,包含PL/SQL块的基本结构、数据检索、数据操纵等核心概念,由Heric(efrioo@hotmail.com)整理。" 在PL/SQL编程中,PL/SQL块是其基本构建块,它可以包含声明、执行和异常处理部分。这些块可以直接嵌入SQL的DML操作(如INSERT, UPDATE, DELETE)和事务控制语句(如COMMIT, ROLLBACK, SAVEPOINT),但不支持直接嵌入DDL(CREATE, ALTER, DROP)和DCL(GRANT, REVOKE)语句。这是因为DDL和DCL通常涉及数据库结构的改变,这需要更高的权限,并且通常不会在PL/SQL的逻辑流程中执行。 1. 数据检索: - **单行数据**:在PL/SQL中,可以使用标量变量或记录变量来接收数据。例如,通过`SELECT INTO`将查询结果赋值给变量。如果查询返回多于或少于一条数据,会分别抛出`NO_DATA_FOUND`或`TOO_MANY_ROWS`异常。 - **标量变量**:`v_ename` 和 `v_sal` 类型与表`emp`中的相应列相同,用于存储查询结果。 - **记录变量**:定义类型`emp_record_type`作为记录,包含`ename`和`sal`字段,然后通过`SELECT INTO`将整个记录赋值给`emp_record`。 2. 数据操纵: - **插入数据**:有两种主要方式,一是使用VALUES子句,二是使用子查询。在VALUES子句中,我们直接指定要插入的值,而在子查询中,我们可以从其他表中选取数据进行插入。 - **更新数据**:使用UPDATE语句配合SET子句来更新列的值。这里,`v_deptno`和`v_loc`变量被用来定位要更新的行和新值,然后WHERE子句确保只更新特定部门的位置。 3. WHERE子句注意事项: - 在WHERE子句中,变量名应避免与列名相同,否则可能导致`TOO_MANY_ROWS`异常,因为PL/SQL会将它们视为相同的列引用,可能返回多行。 4. PL/SQL块中的异常处理: - 在PL/SQL块中,可以使用`BEGIN...EXCEPTION WHEN...END;`结构来捕获和处理异常。例如,`NO_DATA_FOUND`和`TOO_MANY_ROWS`是常见的数据操作异常,可以通过在异常处理部分定义相应的处理逻辑来避免程序中断。 5. 事务控制: - COMMIT用于提交当前事务,保存所有已完成的更改;ROLLBACK用于回滚事务,撤销所有更改;SAVEPOINT允许在事务中设置一个点,以便在需要时回滚到该点。 6. 动态SQL和绑定变量: - 在上述示例中,`&no`和`&name`是绑定变量,它们在运行时由用户输入或程序动态提供值,增加了代码的灵活性和安全性。 PLSQL是Oracle数据库中用于编写过程化SQL的编程语言,它结合了SQL的查询能力与高级编程语言的功能,使得数据库操作更为灵活和强大。理解并熟练掌握PLSQL的这些基本概念和操作,对于进行Oracle数据库开发和维护至关重要。