PL/SQL精要整理:数据操作与查询技巧
需积分: 3 23 浏览量
更新于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数据库开发和维护至关重要。
106 浏览量
103 浏览量
196 浏览量
170 浏览量
626 浏览量
143 浏览量
124 浏览量
504 浏览量
175 浏览量
光明郑大
- 粉丝: 0
- 资源: 2
最新资源
- 实战部署UC平台(OCS=VOIP GW=Exchange2007).pdf
- thinking in java
- 嵌入式Linux Framebuffer 驱动开发.pdf
- grails入门指南
- Apress.Pro.OGRE.3D.Programming.pdf
- Linux设备驱动开发详解讲座.pdf
- GoF+23种设计模式
- Wrox.Python.Create.Modify.Reuse.Jul.2008
- sd卡spi模式翻译资料
- 最新计算机考研专业课程大纲
- oracleproc编程
- Google-Guice-Agile-Lightweight-Dependency-Injection-Framework-Firstpress
- oracle工具TOAD快速入门
- Unix 操作命令大全
- ARM映象文件及执行机理
- rhce教材RH033 - Red Hat Linux Essentials