pl/sql学习文档
需积分: 0 155 浏览量
更新于2009-03-06
收藏 459KB DOC 举报
在PL/SQL编程中,我们经常需要处理数据库的数据,这涉及到一系列的操作,如查询、插入、更新和删除。本篇文章将详细讲解PL/SQL中涉及的存储结构、函数、循环语句以及游标等核心概念。
PL/SQL块允许直接嵌入SQL语句,如SELECT、DML(INSERT, UPDATE, DELETE)和事务控制语句(COMMIT, ROLLBACK, SAVEPOINT)。然而,DDL(CREATE, ALTER, DROP)和DCL(GRANT, REVOKE)语句不能直接在PL/SQL块中使用,它们需要在SQL*Plus或类似的环境中单独执行。
1. **检索单行数据**
- **使用标量变量**:我们可以定义与表列类型相同的变量,如`v_ename`和`v_sal`,然后使用`SELECT INTO`将查询结果直接赋值给这些变量。这里,`emp.ename%type`和`emp.sal%type`表示变量类型与`emp`表的`ename`和`sal`列相同。
- **使用记录变量**:记录变量可以同时接收多列数据,如`emp_record_type`记录变量包含了`ename`和`sal`两列。同样,`SELECT INTO`用于将查询结果存入记录变量。
- **注意事项**:`SELECT INTO`必须返回且只能返回一条数据。否则,如果没有返回数据,会触发`NO_DATA_FOUND`异常;如果返回多条数据,会触发`TOO_MANY_ROWS`异常。在`WHERE`子句中,避免使用与列名相同的变量名以防止引发`TOO_MANY_ROWS`异常。
2. **操纵数据**
- **插入数据**:可以通过`VALUES`子句或者子查询来插入数据。例如,可以先定义变量`v_deptno`和`v_dname`,然后使用`INSERT INTO`语句插入值。
- **更新数据**:更新数据通常涉及使用表达式或子查询来改变列的值。例如,通过设置`v_deptno`和`v_loc`,然后使用`UPDATE`语句更新`dept`表中的`loc`列。
- **删除数据**:可以使用变量或子查询来删除数据。例如,通过设置`v_deptno`,然后使用`DELETE FROM`语句删除特定部门的数据。
3. **SQL游标**
- **游标**是处理查询结果集的一种机制,分为隐式游标(SQL游标)和显式游标。SQL游标主要应用于单行操作,而显式游标用于处理多行结果。
- **SQL游标属性**:
- `SQL%ISOPEN`:在执行时,系统会自动打开和关闭游标,因此其值始终为`FALSE`。
- `SQL%FOUND`:检查SQL语句是否成功执行,如果有影响的行,其值为`TRUE`,否则为`FALSE`。
- `SQL%NOTFOUND`:与`SQL%FOUND`相反,当没有影响的行时,其值为`TRUE`。
- `SQL%ROWCOUNT`:返回上一个DML操作影响的行数。
例如,当尝试更新指定部门员工的薪水时,可以使用`UPDATE`语句,并检查`SQL%FOUND`属性来判断操作是否成功。
总结,PL/SQL提供了一套强大的工具来处理数据库操作,包括对单行数据的检索和操纵,以及通过游标处理多行数据。理解并熟练运用这些概念是成为高效PL/SQL程序员的关键。在实际编程中,需要注意异常处理、事务管理和资源管理,以确保代码的健壮性和性能。
unirong
- 粉丝: 39
- 资源: 7
最新资源
- Matlab根据flac、pfc或其他软件导出的坐标及应力、位移数据再现云图 案例包括导出在flac6.0中导出位移的fish代码(也可以自己先准备软件导出的坐标数据及对应点的位移或应力数据,可根据需
- 拳皇97.exe拳皇972.exe拳皇973.exe
- 捕鱼达人1.exe捕鱼达人2.exe捕鱼达人3.exe
- 医疗骨折摄像检测29-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma数据集合集.rar
- ks滑块加密算法与源代码
- 医护人员检测23-YOLOv8数据集合集.rar
- 1.电力系统短路故障引起电压暂降 2.不对称短路故障分析 包括:共两份自编word+相应matlab模型 1.短路故障的发生频次以及不同类型短路故障严重程度,本文选取三类典型的不对称短路展开研究
- C#连接sap NCO组件 X64版
- 开源基于51单片机的多功能智能闹钟设计,课设毕设借鉴参考
- 深度强化学习电气工程复现文章,适合小白学习 关键词:能量管理 深度学习 强化学习 深度强化学习 能源系统 优化调度 编程语言:python平台 主题:用于能源系统优化调度的深度强化学习算法的性能比较