这篇文章主要介绍了结构化查询语言游标的用法,文中讲解非常详细,配合代码帮助大家更好的理解学习,感兴趣的朋友可以了解下
类型:
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 .
全球的
指定光标名称引用全局游标。
cursor_name
应该从中进行提取的打开的游标的名称。如果同时存在以光标名称为名称的全局和局部游标,则如果指定了全球,则光标名称为全局游标,如果未指定全球,则为局部游标。
@cursor_variable_name
引用应从中进行提取的打开游标的游标变量的名称。
INTO @variable_name[ ,...n]
允许将提取的列中的数据放入局部变量中。列表中的每个变量从左到右都与游标结果集中的相应列相关联。每个变量的数据类型必须匹配相应结果集列的数据类型,或者是相应结果集列的数据类型的受支持的隐式转换。变量的数量必须与光标选择列表中的列数相匹配。
以上就是详解结构化查询语言游标的用法的详细内容,更多关于结构化查询语言游标用法的资料请关注我们其它相关文章!