create PROCEDURE procedure_hrdata_01
AS
BEGIN
BEGIN TRAN --申明事务
--申明游标 为userid
declare order_cursor CURSOR FOR select userid,userdate,jqno from hrdata where bj is null group by userid, userdate,jqno having count(*)>1
declare @a int,@error int,@num int
declare @temp varchar(100),@userid varchar(50),@userdate varchar(50),@jqno varchar(50)--临时变量,用来保存游标值
set @a=1 set @error=0
--打开游标
open order_cursor
WHILE @@FETCH_STATUS = 0 --返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。
begin
--开始循环游标变量
FETCH NEXT FROM order_cursor INTO @userid,@userdate,@jqno
--执行sql操作
set @temp=@userid+@userdate+@jqno
select @num=id from hrdata where bj is null and (userid+userdate+jqno) in (@temp) and id not in (select max(id) from hrdata where (userid+userdate+jqno) in (@temp))
update hrdata set bj='11' where bj is null and id=@num
set @a=@a+1
set @error=@error+@@error --记录每次运行sql后 是否正确 0正确
end
if @error=0--没有错误 统一提交事务
begin
commit tran--提交
end
else
begin
rollback tran--回滚
end
CLOSE order_cursor--关闭游标
DEALLOCATE order_cursor--释放游标
END
go
执行:exec procedure_hrdata_01
分享到:
相关推荐
SqlServer存储过程的导出导入 近日在研究SQL的存储过程,这里我陆续将我在使用存储过程中碰到的问题及解决办法发布到网上,请各位大虾指正。 SqlServer存储过程的导出导入,网上相关资料特别少,经过摸索,这里写...
SQLserver存储过程异常处理
主要介绍了SQLServer存储过程中事务的使用方法,简短的代码带大家更好的学习使用SQLServer存储过程中事务,感兴趣的小伙伴们可以参考一下
详细描述SqlServer存储过程,从认识、创建到原理和写法
执行Sqlserver存储过程返回DataSet
详细介绍了SqlServer的存储过程调试方法,适合初学者及想深入研究的开发人员
SQLServer存储过程(stored procedure)从入门到精通 内附详细实例
文档记录了SQL Server在存储运用时的语法,需要有一定的SQL语言学习基本,本文档只是做了梳理与总结,以便查看和识记。
亲测SqlServer存储过程解密工具(dbForge SQL Decryptor 3.1.24) 支持sql2000、2005、2008(R2)、2012、2014、2016、2017的存储过程的解密; 程序运行需要 .NET Framework 4.5.2 or higher installed
SQLSERVER 存储过程 语法
SQL Server数据库中直接调用Web Service,不需要通过前台调用
SQLSERVER存储过程例子
SqlServer存储过程游标 ,一个例子
SQLServer存储过程在系统开发中的应用 SQLServer存储过程在系统开发中的应用
简单的学习例子 sqlserver 存储过程、函数的创建和使用 和 常用知识点
VB 调用 sql server 存储过程。文档
SQL存储过程习题,SQL触发器习题,SQL习题,基础语法,与W3School类似,初学者学习使用。
可以将SQL Server存储过程转为oracle存储过程的工具
SQL SERVER 存储过程的操作与管理
SQL Server存储过程的命名标准,整理了sql中的一些存储过程