当你检索的数据只是一条记录时,你所编写的事务语句代码往往使用选择插入语句,但如果从某一结果集中逐一地读取一条记录呢?游标为我们提供了一种极为优秀的解决方案,这篇文章主要给大家介绍了关于结构化查询语言中游标(光标)基本使用的相关资料,需要的朋友可以参考下
目录
类型:1.普通游标2.滚动游标具体取得用法:参数总结
类型:
1.普通游标只有然后操作
2.滚动游标有多种操作
1.普通游标
声明@用户名varchar(20),@用户Id varchar(100)
将光标名称游标声明为-定义游标
从用户信息中选择前10个用户标识、用户名
按用户Id DESC排序
打开光标名称-打开游标
将下一个从光标名称提取到@用户Id,@用户名-抓取下一行游标数据
而@@FETCH_STATUS=0
开始
'打印'用户ID:"@ UserId "用户名:' @用户名
将下一个从光标名称提取到@用户Id,@用户名
结束
关闭光标名称-关闭游标
取消分配游标名称-释放游标
结果:
用户身份证号:知止用户名:邓鸿芝
用户身份证号:鱼雨用户名:魏雨
用户ID:玉洁用户名:李玉杰
用户ID:渊源用户名:王梦缘
用户身份证号:尤优用户名:lisi
用户ID:yiyiren用户名:任毅
用户ID:颜博用户名:王艳波
用户身份证号:徐旭用户名:陈佳绪
用户ID:香香用户名:李庆祥
用户身份证号:温温用户名:魏文文
2.滚动游标
-带卷起选项的游标
设置不指望
为-史考尔声明C滚动光标后,有了更多的游标操作(滚动游标)
从用户信息中选择前10个用户标识、用户名
按用户Id DESC排序
打开C
从C -获取最后一个最后一行的数据,并将当前行为指定行
从C -中获取绝对四从第一行开始的第四行数据,并将当前行为指定行这里的n可正可负,否往下翻,否往上翻
从C -获取相对3相对于当前行的后3行数据,并将当前行为指定行这里的n可正可负
从C -中获取相对-2相对于当前行的前2行数据,并将当前行为指定行
从C -中获取先验相对于当前行的前一行数据
首先从C -获取刚开始第一行的数据,并将当前行为指定行
从C -中获取下一个相对于当前行的后一行数据
关闭C
解除分配C
结果(可以参考第一个结果分析):
具体FETCH用法:
取得
[ [下一个|前一个|第一个|最后一个
|绝对{ n | @nvar }
| RELATIVE { n | @nvar }
]
从
]
{ { [全局]光标名称} | @光标变量名称}
[ INTO @variable_name [,n ] ]
Arguments
NEXT
返回紧跟在当前行之后的结果行,并将当前行递增到返回的行。如果获取下一个是对游标的第一次提取,则返回结果集中的第一行。接下来是默认的游标获取选项。
PRIOR
返回当前行之前的结果行,并将当前行递减到返回的行。如果获取优先是对游标的第一次提取,则不返回任何行,游标将位于第一行之前。
FIRST
返回光标中的第一行,并使其成为当前行。
LAST
返回光标中的最后一行,并使其成为当前行。
ABSOLUTE { n| @nvar}
如果n或@nvar为正数,则从游标前面返回n行,并将返回的行作为新的当前行。如果n或@nvar为负,则返回光标末尾前n行的行,并将返回的行作为新的当前行。如果n或@nvar为0,则不返回任何行…n。必须是整数常量,而@nvar必须是smallint、tinyint或int .
RELATIVE { n| @nvar}
如果n或@nvar为正数,则返回当前行之后n行的行,并将返回的行作为新的当前行。如果n或@nvar为负,则返回当前行之前的n行,并将返回的行作为新的当前行。如果n或@nvar为0,则返回当前行。如果在对游标进行第一次提取时指定获取相对值,并将n或@nvar设置为负数或0,则不会返回任何行…n。必须是整数常量,而@nvar必须是smallint、tinyint或int .
GLOBAL
指定光标名称引用全局游标。
光标名称
应该从中进行提取的打开的游标的名称。如果同时存在以光标名称为名称的全局和局部游标,则如果指定了全球,则光标名称为全局游标,如果未指定全球,则为局部游标。
@cursor_variable_name
引用应从中进行提取的打开游标的游标变量的名称。
INTO @variable_name[ ,...n]
允许将提取的列中的数据放入局部变量中。列表中的每个变量从左到右都与游标结果集中的相应列相关联。每个变量的数据类型必须匹配相应结果集列的数据类型,或者是相应结果集列的数据类型的受支持的隐式转换。变量的数量必须与光标选择列表中的列数相匹配。
总结
到此这篇关于结构化查询语言中游标(光标)基本使用的文章就介绍到这了,更多相关结构化查询语言游标的使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。