create proc updatetestuser2
as
declare testcursor cursor for
select login_id,login_name from testuser1
open testcursor
declare @loginid int,@loginname varchar(30)
fetch next from testcursor into @loginid,@loginname
while(@@fetch_status = 0)
begin
update testuser2 set oalogin_id = @loginid where login_name = @loginname
fetch next from testcursor into @loginid,@loginname
end
close testcursor
deallocate testcursor
go
呵呵,因实施现场需要我们研发人员给他们一个批量删除业务数据的SQL,我把他写成存储过程来用,存储过程如下:
--创建存储过程删除入围管理和合作协议相关业务数据
--作者:zengqiang
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'au_info_all' AND type = 'P')
DROP PROCEDURE SP_DELETEDATA
GO
CREATE PROCEDURE SP_DELETEDATA AS
DECLARE @changeID int
DECLARE TableID cursor for
select ItemAcceptId from T_ItemAccept
OPEN TableID
fetch next from TableID into @changeID
-- 循环开始
while @@fetch_status = 0
begin
-- 逻辑操作
delete from T_StartInfo where FlowTypeId=2468 and RefId=@changeID
delete from T_ApproveHistory where FlowTypeId=2468 and RefId=@changeID
delete from T_ItemAccept where ItemAcceptId=@changeID
-- 取下一条记录
fetch next from TableID into @changeID
end
-- 循环结束
-- 关闭游标 删除游标引用
close TableID
deallocate TableID
DECLARE TableID2 cursor for
select cooperateId from T_Cooperate
OPEN TableID2
fetch next from TableID2 into @changeID
-- 循环开始
while @@fetch_status = 0
begin
-- 逻辑操作
delete from T_StartInfo where FlowTypeId=668 and RefId=@changeID
delete from T_ApproveHistory where FlowTypeId=668 and RefId=@changeID
delete from T_Cooperate where cooperateId=@changeID
-- 取下一条记录
fetch next from TableID2 into @changeID
end
-- 循环结束
-- 关闭游标 删除游标引用
close TableID2
deallocate TableID2
go
--执行存储过程
execute SP_DELETEDATA
go
--删除存储过程
DROP PROCEDURE SP_DELETEDATA
----------------------------------------------------------------------------------------------------------------------------------------------------
--另一个存储过程
create procedure CreateReplyCode_A_ProC --处理常规的没有批复文号的项目
@ConstructUnitId int, --建设单位ID
@KeyCode varchar(255) --关键字,对应给的那个Excel表!如ConstructUnitId = 401,KeyCode = '三亚项字'
as
set nocount on
declare @Year varchar(255)
declare @SerialNO int
set @SerialNO = 0
declare @SerialNOStr varchar(255)
declare @Len int
declare @I int
set @I = 0
declare @ItemCreatId int
declare @KeyCodeTemp varchar(255)
declare ItemCreatId_Cursor_A cursor for
select ItemCreatId from T_ItemCreate left outer join t_startinfo on t_itemcreate.itemcreatId = t_startinfo.refid
and t_startinfo.flowtypeid = 1 and t_startinfo.docstate = 3 where (replycode is null or replycode = '')and ConstructUnitId = @ConstructUnitId
open ItemCreatId_Cursor_A
fetch next from ItemCreatId_Cursor_A into @ItemCreatId
while @@fetch_status = 0
begin
select @Year = PlanYear from T_ItemCreate inner join T_yearplan on T_YearPlan.YearPlanid=T_ItemCreate.YearPlanId where T_ItemCreate.ItemCreatId = @ItemCreatId
begin
set @SerialNO = @SerialNo + 1
set @SerialNoStr = CAST(@SerialNo as varchar(255))
set @Len = LEN(@SerialNoStr)
while @I < (4 - @Len)
begin
set @SerialNOStr = '0'+@SerialNOStr
if LEN(@SerialNOStr) = 4
break
else
continue
end
set @KeyCodeTemp = @KeyCode+'['+@Year+']'+@SerialNOStr
update T_ItemCreate set ReplyCode = @KeyCodeTemp where ItemCreatId = @ItemCreatId
end
fetch next from ItemCreatId_Cursor_A into @ItemCreatId
end
close ItemCreatId_Cursor_A
deallocate ItemCreatId_Cursor_A
/*****************************************************************************************/
create procedure CreateReplyCode_B_ProC --处理建设单位为17的没有批复文号的项目
@ConstructUnitId int, --建设单位ID为17(只能输入17)
@ConstructDeptId int, --建设单位为17的取取省公司部门ID
@KeyCode varchar(255) --关键字,对应给的那个Excel表!如ConstructDeptId = 14,KeyCode = '计建项字'
as
set nocount on
declare @Year varchar(255)
declare @SerialNO int
set @SerialNO = 0
declare @SerialNOStr varchar(255)
declare @Len int
declare @I int
set @I = 0
declare @ItemCreatId int
declare @KeyCodeTemp varchar(255)
declare ItemCreatId_Cursor_B cursor for
select ItemCreatId from T_ItemCreate left outer join t_startinfo on t_itemcreate.itemcreatId = t_startinfo.refid
and t_startinfo.flowtypeid = 1 and t_startinfo.docstate = 3 where (replycode is null or replycode = '')and ConstructUnitId = @ConstructUnitId and ConstructDeptId = @ConstructDeptId
open ItemCreatId_Cursor_B
fetch next from ItemCreatId_Cursor_B into @ItemCreatId
while @@fetch_status = 0
begin
select @Year = PlanYear from T_ItemCreate inner join T_yearplan on T_YearPlan.YearPlanid=T_ItemCreate.YearPlanId where T_ItemCreate.ItemCreatId = @ItemCreatId
begin
set @SerialNO = @SerialNo + 1
set @SerialNoStr = CAST(@SerialNo as varchar(255))
set @Len = LEN(@SerialNoStr)
while @I < (4 - @Len)
begin
set @SerialNOStr = '0'+@SerialNOStr
if LEN(@SerialNOStr) = 4
break
else
continue
end
set @KeyCodeTemp = @KeyCode+'['+@Year+']'+@SerialNOStr
update T_ItemCreate set ReplyCode = @KeyCodeTemp where ItemCreatId = @ItemCreatId
end
fetch next from ItemCreatId_Cursor_B into @ItemCreatId
end
close ItemCreatId_Cursor_B
deallocate ItemCreatId_Cursor_B
分享到:
相关推荐
完整的SQL SERVER双层游标嵌套示例
Declare @Id varchar(20) Declare @Name varchar(20) Declare Cur Cursor For select substring(id,0,7) as id,name from temp1 Open Cur Fetch next From Cur Into @Id,@Name While @@fetch_status=0 Begin Update ...
主要介绍了sqlserver游标使用步骤,包括创建游标、关闭游标,大家参考使用吧
sql server 2008 存储过程示例带游标
一些sql server和oracle存储过程示例
SQL Server存储过程示例,在存储工程中Transaction使用示例,游标的使用示例,自定义异常的使用示例,以及Java调用SQL Server存储过程的示例代码。包括JDBC和Spring两种调用方式。
一个存储过程的示例,简单展示了如下方面: 1,异常处理,事务回滚。 2,错误消息返回。 3,游标嵌套。 4,对于嵌套游标STATUS的互相影响问题的解决办法《注意001和002的注释位置,fetch的位置》。 对于初学者,...
使用MS SQL Server这样久,游标一直没有使用过。以前都是使用WHILE循环加临时表来实现。刚刚联系个示例了解到游标概念与语法
本文件 适用于sqlserver初学者。 文档中对存储过程。游标。左右连接查询 等 有详细的示例 和注释。 简单易懂。
该书解释并比较了SQL Server 2000和SQL Server 2005在数据库开发相关问题上的解决方案,深入讨论了SQL Server 2005中新增的T-SQL编程特性,包含了大量的代码示例、表示例和逻辑难题以帮助数据库开发人员和管理员理解...
包含一些常见的SqlServer问题解决方法,包括:sa忘记密码怎么办?SQL server2008过期激活方法?SqlSever千万条以上记录分页数据库优化经验总结,删除所有存储过程的方法及一个简单的游标示例.
《SQL Server 2008管理员必备指南》适合所有SQL Server用户参考,更是数据库管理员的必备指南。 编辑推荐 《SQL Server 2008管理员必备指南》教你全面掌握SQL Server 2008的必备指南!这本实用指南讲述了SQL Server ...
《SQL Server 2008管理员必备指南》适合所有SQL Server用户参考,更是数据库管理员的必备指南。 编辑推荐 《SQL Server 2008管理员必备指南》教你全面掌握SQL Server 2008的必备指南!这本实用指南讲述了SQL Server ...
《SQL Server 2008管理员必备指南》适合所有SQL Server用户参考,更是数据库管理员的必备指南。 编辑推荐 《SQL Server 2008管理员必备指南》教你全面掌握SQL Server 2008的必备指南!这本实用指南讲述了SQL Server ...
本书首先介绍SQL Server 2008的新功能,然后在更详实的示例代码的引导下全面深入地展开论述,讨论了如何编写复杂查询、构建各种数据结构以及提高应用程序性能,还讲述了如何管理高级脚本和数据库以及如何确定和...
本书首先介绍SQL Server 2008的新功能,然后在更详实的示例代码的引导下全面深入地展开论述,讨论了如何编写复杂查询、构建各种数据结构以及提高应用程序性能,还讲述了如何管理高级脚本和数据库以及如何确定和...
本书适合专业数据库开发者、BI开发者、DBA和以SQL Server作为后台数据库的一般应用程序开发者,读者可以通过书中的最佳实践、高级技巧和代码示例来掌握这门复杂的编程语言,以切合实际的方案来解决复杂的实际问题。...