PL/SQL精要整理:数据操作与查询技巧
需积分: 3 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数据库开发和维护至关重要。
2008-12-31 上传
2008-09-13 上传
2019-03-01 上传
2019-08-02 上传
2009-11-09 上传
2015-05-06 上传
2012-09-04 上传
光明郑大
- 粉丝: 0
- 资源: 2
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析