当前课程知识点:数据库系统原理与开发 > 第6章 数据库应用编程 > 6.4 数据库游标 > 6.4 数据库游标
同学们大家好
我是主讲教师陈安龙
下面我们开始学习数据库编程的第5小节“数据库游标”
本节学习的目标如下
1)了解触发器的基本概念
2)掌握postgreSQL触发器创建 修改 删除的方法
3)理解触发器的执行过程
一 游标的基本概念
(1)游标(Cursor)是一种临时的数据库对象
(2)用来存放从数据库表中查询返回的数据记录
(3)提供了从结果集中提取并分别处理每一条记录的机制
(4)游标总是与一条SQL查询语句相关联
(5)游标包括:SQL语言的查询结果
指向特定记录的指针
现在下面我们开始学习如何声明游标
二、声明游标
(1)在存储过程中游标类型的变量
例如:游标变量
关键字refcursor; refcursor是关键字
此时 游标变量还没有绑定查询语句
因此不能访问游标变量
(2)使用游标专有的声明语法
如: 游标名 CURSOR [ ( arguments ) ] FOR query;
其中arguments为由逗号分隔的参数列表
用于打开游标时向游标传递参数
类似于存储过程或函数的形式参数
query是select数据查询语句
返回的值存储在游标变量中
游标声明的示例
例如(1)curStudent CURSOR FOR SELECT * FROM student
(2)curStudentOne CURSOR (key integer)ISSELECT * FROM student WHERE SID = key;
三 打开游标
(1)OPEN FOR
其声明形式为:OPEN unbound_cursor FOR query
打开未绑定的游标变量
其query查询语句是返回记录的SELECT语句
例如 OPEN curVars1 FOR SELECT * FROM student WHERE SID = mykey;
(2)OPEN FOR EXECUTE
其声明形式为: OPEN unbound_cursor FOR EXECUTE query-string
打开未绑定的游标变量
EXECUTE将动态执行查询字符串
例如:OPEN curVars1 FOR EXECUTE 'SELECT * FROM ' || quote_ident($1);
注意:$1是指由存储过程传递的第1个参数
(3)打开一个绑定的游标
这里假设在存储过程中使用游标
其声明形式为: OPEN
仅适用于绑定的游标变量
只有当该变量在声明时包含接收参数
才能以传递参数的形式打开该游标
参数将传入到游标声明的查询语句中
例如:OPEN curStudent
OPEN curStudentOne 括号中有一个学生学号的参数
四 使用游标
其声明形式为 FETCH cursor INTO target
FETCH命令从游标中读取下一行记录的数据到目标中
读取成功与否
可通过PL/SQL内置系统变量FOUND来判断
例如:第1条语句是从游标curVars1读取数据到 rowvar中
第2条从curStudent读取数据到SID Sname sex等变量
请注意:游标的属性必须与 目标列的数量一致
并且类型兼容
如果游标不再使用
则需要关闭游标
五 关闭游标
CLOSE cursorName
当游标数据不再需要时
需要关闭游标
以释放其占有的系统资源
主要是释放游标数据所占用的内存资源
cursorName是游标名
例如 CLOSE curStudent
需要注意 当游标被关闭后
如果需要再次读取游标的数据
需要重新open打开游标
这时游标重新查询返回新的结果
在存储过程中使用游标的示例1
1 下列示例是使用不带参数的游标
查询student表的学号 学生姓名和性别
首先声明游标和局部变量 接下来打开游标
然后用循环实现对游标中的数据读取
最后关闭游标 结束程序
执行存储过程的结果
这里是存储过程使用游标从学生表中查询的学生信息
在存储过程中使用游标的示例2
下面示例使用带参数的游标
从成绩表中查询分数大于某给定值的学号和课程号
首先声明带参数的游标和局部变量
接下来打开游标
向游标中传递实参
然后用循环实现对游标中的数据读取
最后关闭游标
这里是存储过程使用游标从学生成绩表中查询的
成绩大于85分的学生信息
-1.1 数据库及其系统概念
-1.2 数据库技术发展
-1.3 数据库应用系统
-1.4 典型数据库管理系统
-1.5 PostgreSQL对象-关系数据库系统软件
-第1章 数据库系统概论--本章单元测试
-2.1 关系及其相关概念
-2.2 关系模型原理
-2.3 PostgreSQL数据库关系操作实践
-第2章 数据库关系模型--本章单元测试
-3.1 SQL语言概述
-3.2 数据定义SQL语句
-3.3 数据操纵SQL语句
-3.4 数据查询SQL语句
-3.5 数据控制SQL语句
-3.6 视图SQL语句
-3.7 PostgreSQL数据库SQL实践
-第3章 数据库操作SQL语言--本章单元测试
-4.1 数据库设计概述
-4.2 E-R模型方法
-4.3 数据库建模设计
-4.4 数据库规范化设计
-4.5 数据库设计模型SQL实现
-4.6 基于Power Designer的数据库设计建模实践
--4.6 基于Power Designer的数据库设计建模实践
-第4章 数据库设计与实现--本章单元测试
-5.1 数据库管理概述
-5.2 事务管理
--5.2 事务管理
-5.3 并发控制
-5.4 安全管理
-5.5 数据库备份与恢复
-5.6 PostgreSQL数据库管理项目实践
-第5章 数据库管理--本章单元测试
-6.1 数据库连接技术
-6.2 数据库存储过程
-6.3 数据库触发器
-6.4 数据库游标
-6.5 嵌入式SQL编程
-第6章 数据库应用编程--本章单元测试
-7.1 NoSQL数据库概述
-7.2 列存储数据库
-7.3 键值对数据库
-7.4 文档型数据库
-7.5 图形数据库
-7.6 HBase数据库项目实践
-第7章 NoSQL数据库技术--本章单元测试
-期末测试--期末测试