From 7ff0f713802ccda13c88cc7e77024aaddc7ca9b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E4=B8=B0=E5=8D=8E?= <3254757072@qq.com> Date: Tue, 20 Sep 2022 23:45:41 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...350\257\276 \346\270\270\346\240\207 .md" | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 "25\346\235\250\344\270\260\345\215\216/\347\254\224\350\256\260/9.20 \347\254\254\345\215\201\350\212\202\350\257\276 \346\270\270\346\240\207 .md" diff --git "a/25\346\235\250\344\270\260\345\215\216/\347\254\224\350\256\260/9.20 \347\254\254\345\215\201\350\212\202\350\257\276 \346\270\270\346\240\207 .md" "b/25\346\235\250\344\270\260\345\215\216/\347\254\224\350\256\260/9.20 \347\254\254\345\215\201\350\212\202\350\257\276 \346\270\270\346\240\207 .md" new file mode 100644 index 0000000..ab6296d --- /dev/null +++ "b/25\346\235\250\344\270\260\345\215\216/\347\254\224\350\256\260/9.20 \347\254\254\345\215\201\350\212\202\350\257\276 \346\270\270\346\240\207 .md" @@ -0,0 +1,104 @@ +## 一、游标 + +#### 1、游标概念 + +游标是一种能从包含多个元组的集合中每次读取一个元组的机制。游标总是和一段SELECT语句关联,SELECT语句查询出的结果集就作为集合,游标能每次从该集合中读取出一个元组进行不同操作。 + +#### 2、游标的作用 + +- 将游标定位在结果集特定元组。 + +- 将游标指定结果集中的元组数据读出。 +- 利用循环读取结果集中的多个元组数据。 +- 对游标指定结果集的元组进行数据修改。 +- 为其它用户设置结果集数据的更新限制。 +- 提供脚本、存储过程和触发器中访问结果集中数据的TSQL语句。 + +#### 3、声明游标 + +``` +declare 游标名 cursor for (select ...语句) +``` + +- 定义游标所选出的结果集存放在一个临时表,对该游标的读取操作都有该临时表来应答。游标不会随着基本表内容的改变而改变,同时也无法通过游标来更新基本表。如果不使用该关键字,对基本表的更新、删除都会反应到游标中。 + +- #### scroll: + + 指定游标使用的读取选项,默认值为NEXT,如果不使用该关键字,那么读取游标只能进行NEXT操作,如果使用该关键字,那么游标向任何方向,或者任何位置移动,进行next、last、first、prior、relative、absulute 操作。 + +- #### for read only: + + 表示定义游标为只读游标,不允许使用update、delete语句更新游标内的数据. + +- #### update + + 指定游标内可以更新的列,如果有指定要更新的列,则表明所有列都允许更新。 + +#### 4、打开游标 + +``` +open 游标名 +``` + +#### 5、读取游标 + +``` +fetch first(第一个) next(下一个) last(最后一个) from 游标名 into (可赋值给定义的值) +``` + +| 名称 | 含义 | +| ---------- | ------------------------------------------------------------ | +| first | 读取游标中的第一行 | +| last | 读取游标的最后一行 | +| next | 读取游标当前行下一行数据 | +| prior | 读取当前游标上一行数据 | +| relative n | 读取游标当前行之前或之后第n行数据(n为正则向前,反之则向后) | +| absulute n | 读取游标第n行数据(n为负从最后一行开始,反之则从第一行开始) | + +#### 6、关闭游标 + +在处理完操作后,必须关闭游标释放结果集 + +``` +close 游标名 +``` + +#### 7、释放游标 + +游标使用不再需要之后,需要释放游标,以获取与游标有关的一切资源。 + +``` +deallocate 游标名 +``` + +#### 8、游标系统变量与函数 + +游标系统变量与函数返回有关游标的信息。 + +- @@CURSOR_NUM + +返回最后打开的游标中满足条件的元组数。 + +- @@FETCH_STATUS + +返回上次执行FETCH命令的状态。 + +| 返回值 | 说明 | +| ------ | --------------------------------- | +| 0 | fetch语句成功 | +| -1 | fetch语句失败或此元组不在结果集中 | +| -2 | 被读取的元组不存在 | + +#### 9、利用游标修改和删除表数据 + +``` +--修改数据 +update 表名 + set 游标名 =value|expression + where current of 游标名 + +--删除数据 +delete from 表名 +where current of 游标名 +``` + -- Gitee