SQL 游标
2021/10/14 19:14:53
本文主要是介绍SQL 游标,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
关系数据库的大部分管理操作都与Transact-SQL中的查询语句SELECT有着密切的联系。SELECT语句一般返回的是包含多条记录的、存放在客户机内存中的结果集。当用户需要访问一个结果集中的某条具体记录时,就需要使用游标功能。
作为全局游标,一旦被创建就可以在任何位置上访问,而作为局部游标则只能在声明和创建的函数或存储过程中对它进行访问。当多个不同的过程或函数需要访问和管理同一结果集时,应使用全局游标。
而局部游标管理起来更容易一些,因而其安全性也相对较高。局部游标可以在一个存储过程、触发器或用户自定义的函数中声明。由于其作用域受存储过程的限制,所以在自身所处的过程中对游标的任何操作都不会对其他过程中声明的游标产生影响。
(个人理解游标就是循环)
举例子:
下个月的期初金额就是上个月的现存金额
最终效果
DECLARE @年月 varchar(6)
DECLARE @id varchar(6)
declare @客户 nvarchar(20)
declare @金额 decimal(18,4)
declare @期初金额 decimal(18,4)
DECLARE @入账金额 decimal(18,4)
---创建游标
DECLARE CUR_YFK CURSOR LOCAL FORWARD_ONLY DYNAMIC
FOR
SELECT * FROM 预付款
order by 年月
---打开游标预付款
open CUR_YFK
FETCH FROM CUR_YFK into @年月 , @id ,@客户 , @金额
while @@fetch_status=0 --判断是否成功获取数据
begin
set @期初金额 = (select 现存金额 from 现存预付款
where 年月 = @年月-1
and 客户 = @客户)
---获取下月期初金额
print @期初金额
if (select max(年月) from 现存预付款 ) < @年月
begin
insert into 现存预付款 values (@年月,'' ,@客户 , @期初金额 ,0,0)
end
else
begin
print '' end
update 现存预付款 set 入账金额 = @金额
where 年月 = @年月
and 客户 = @客户
update 现存预付款 set 现存金额 = 期初金额+入账金额
print '执行成功'+@年月 --进行相应处理(跟据需要填入SQL文)
fetch next from CUR_YFK into @年月 , @id ,@客户 , @金额 --将游标向下移1行
end
close CUR_YFK --关闭游标
deallocate CUR_YFK ---释放游标
参考代码如上。
这篇关于SQL 游标的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南
- 2024-09-30Dnd-Kit学习:新手快速入门指南