SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
drop PROCEDURE remove_repeated_msisdn
go
-- =============================================
-- 处理重复号
-- =============================================
CREATE PROCEDURE [dcms_zhq].remove_repeated_msisdn
AS
BEGIN
declare @num varchar(30)
declare @count bigint
declare @id bigint
declare @big_box varchar(30)
declare @little_box varchar(30)
declare @zha varchar(30)
declare @status bigint
declare c1 cursor local for
select msisdn_,count(id_) amount_ from dcms_zhq.SIM_CARD_RESOURCE_
where is_locked_='N' and unit_type_id_=400 and msisdn_='15119880662'
group by msisdn_
having count(id_)>1
open c1
fetch next from c1 into @num,@count
while (@@fetch_status=0)
begin
--#####################
declare c2 cursor local for
select id_,big_box_id_,little_box_id_,zha_id_,status_
from dcms_zhq.SIM_CARD_RESOURCE_ where msisdn_=@num order by input_date_time_ asc
declare @count2 bigint
set @count2 = 0
open c2
fetch next from c2 into @id,@big_box,@little_box,@zha,@status
while (@@fetch_status=0)
begin
set @count2 = @count2 + 1
if @count2<@count
begin
BEGIN TRANSACTION
update dcms_zhq.SIM_CARD_RESOURCE_ set
packer_=packer_+'_20100420_'+ltrim(rtrim(str(@count2))),
msisdn_=msisdn_+'_20100420_'+ltrim(rtrim(str(@count2))),
life_status_=102
where id_=@id
if @status=2 or @status=16
begin
if(len(@zha)>0) update dcms_zhq.SIM_CARD_RESOURCE_ set amount_=amount_-1 where packer_=@zha
if(len(@little_box)>0) update dcms_zhq.SIM_CARD_RESOURCE_ set amount_=amount_-1 where packer_=@little_box
if(len(@big_box)>0) update dcms_zhq.SIM_CARD_RESOURCE_ set amount_=amount_-1 where packer_=@big_box
end
IF @@ERROR>0
ROLLBACK TRANSACTION
else
COMMIT TRANSACTION
end
fetch next from c2 into @id,@big_box,@little_box,@zha,@status
end
close c2
deallocate c2
--#####################
fetch next from c1 into @num,@count
end
close c1
deallocate c1
END
GO
分享到:
相关推荐
SqlServer存储过程及调试指南的知识点如下: 1. 存储过程概念:存储过程是一组为完成特定功能的SQL语句集,这些语句经过编译后存储在数据库中,供用户通过指定存储过程名和参数(如有)来执行。存储过程被称作...
在数据库管理领域,存储过程和游标是两个重要的概念,它们在数据操作和处理中扮演着不可或缺的角色。这里,我们将深入探讨这两个...在具体项目中,应结合业务需求和技术特点,谨慎选择和设计存储过程及游标的应用场景。
游标和存储过程是数据库管理中非常重要的...正确地创建和调用游标及存储过程,能够更好地管理和操作数据库,提升应用程序的性能和功能。在实际开发中,应根据具体需求选择合适的数据处理方式,充分利用这些工具的优势。
在探讨SQL Server存储过程的相关知识点之前,首先需要明确存储过程的定义。存储过程是一组为了完成特定功能的SQL语句集合,它可以接受输入参数并可返回输出参数,还可以包含逻辑控制流程,比如条件判断、循环、分支...
在存储过程中实现分页查询,可以使用`OFFSET`和`FETCH NEXT`语句(SQL Server 2008及以上版本),或者在早期版本中通过变量和游标实现。分页可以帮助用户在大量数据中有效地浏览和获取特定范围的结果,同时减轻...
本文介绍一种简单且高效的SQL Server存储过程实现分页的方法,这种方法仅需提供SQL语句、每页的记录数以及当前页数即可快速完成分页操作。 #### SQL Server存储过程分页原理 在SQL Server中,通过存储过程实现分页...
在SQL Server中,事务、游标、存储过程和触发器是数据库管理中不可或缺的重要概念,它们各自扮演着关键角色,确保数据的完整性和一致性。 **事务(Transactions)**是数据库操作的基本单位,它保证了一组操作要么...
在IT行业中,数据库操作是不可或缺的一部分,而Java的JDBC(Java Database Connectivity)API则提供了与各种数据库交互的...通过阅读提供的博客链接,你将能获取更多关于JDBC调用存储过程和函数的实践经验及详细解释。
本文详细介绍了SQL Server中存储过程的创建、管理以及各种参数的使用方法,通过具体的示例让读者更好地理解和掌握存储过程的编写技巧。存储过程不仅可以提高数据处理的效率,还能增强应用程序的安全性和稳定性。希望...
本资源集合提供了微软项目中的SQL实训资料,包含了存储过程及游标的源代码示例,同时也可能包括相关的课件,帮助我们深入理解和应用这些技术。 首先,我们来详细了解一下存储过程。存储过程是预编译的SQL语句集合,...
此存储过程中使用了游标嵌套的技术。主游标`CUR0`用于获取基础数据,而子游标`CUR`则用于更新具体的记录。通过这种方式可以逐条处理数据,使得代码更加灵活且易于管理。需要注意的是,游标操作可能会降低性能,因此...
根据提供的文件信息,本文将详细解析“SQL Server存储过程解密算法”的相关内容,重点在于如何理解和运用该解密算法。 ### 一、SQL Server 存储过程解密算法概述 在SQL Server数据库管理系统中,存储过程是一种预...
游标的使用类似于文件处理中的文件句柄,一旦游标被声明并成功打开,就可以通过它来访问结果集中的数据。游标能够实现按传统程序读取平面文件类似的方式处理来自基础表的结果集,从而把表中数据以平面文件的形式呈现...
使用Oracle的JDBC驱动,你可以编写Java应用程序来执行存储过程、处理游标,以及进行复杂的数据库操作。 总的来说,Oracle数据库的安装、存储过程中的游标应用,以及数据库优化是数据库管理员和开发人员必须掌握的...
值得注意的是,优化分页性能不仅要考虑存储过程的设计,还要关注索引的使用。合理的索引可以显著提高分页查询的速度,尤其是在处理大量数据时。同时,避免全表扫描,尽可能利用覆盖索引来减少I/O操作,也是提升性能...
4. **编程复杂性**:游标的使用增加了程序的复杂度,特别是涉及到循环和条件判断时。 #### 六、总结 游标是SQL语言中的一个重要特性,用于处理需要逐行处理的数据。合理使用游标可以简化复杂数据处理任务的实现,...
本文将对比三种不同的SQL Server存储过程中的分页方案,以帮助你选择最适合你应用场景的方法。 ### 分页方案一:Not In + SELECT TOP 这种方法是通过`NOT IN`子句和`SELECT TOP`配合实现分页。首先,它获取前N个ID...