`
raymond.chen
  • 浏览: 1433474 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Sqlserver存储过程及游标的使用

Go 
阅读更多
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存储过程及调试指南

    SqlServer存储过程及调试指南的知识点如下: 1. 存储过程概念:存储过程是一组为完成特定功能的SQL语句集,这些语句经过编译后存储在数据库中,供用户通过指定存储过程名和参数(如有)来执行。存储过程被称作...

    存储过程和游标

    在数据库管理领域,存储过程和游标是两个重要的概念,它们在数据操作和处理中扮演着不可或缺的角色。这里,我们将深入探讨这两个...在具体项目中,应结合业务需求和技术特点,谨慎选择和设计存储过程及游标的应用场景。

    游标 和 存储过程的创建 及 在程序中的调用

    游标和存储过程是数据库管理中非常重要的...正确地创建和调用游标及存储过程,能够更好地管理和操作数据库,提升应用程序的性能和功能。在实际开发中,应根据具体需求选择合适的数据处理方式,充分利用这些工具的优势。

    SQLserver存储过程语法及实例

    在探讨SQL Server存储过程的相关知识点之前,首先需要明确存储过程的定义。存储过程是一组为了完成特定功能的SQL语句集合,它可以接受输入参数并可返回输出参数,还可以包含逻辑控制流程,比如条件判断、循环、分支...

    TSQL 存储过程 游标 数据库 sql优化 存储过程分页

    在存储过程中实现分页查询,可以使用`OFFSET`和`FETCH NEXT`语句(SQL Server 2008及以上版本),或者在早期版本中通过变量和游标实现。分页可以帮助用户在大量数据中有效地浏览和获取特定范围的结果,同时减轻...

    最简单的SQL Server数据库存储过程分页

    本文介绍一种简单且高效的SQL Server存储过程实现分页的方法,这种方法仅需提供SQL语句、每页的记录数以及当前页数即可快速完成分页操作。 #### SQL Server存储过程分页原理 在SQL Server中,通过存储过程实现分页...

    SQL+Server的事务、游标、存储过程及触发器.doc

    在SQL Server中,事务、游标、存储过程和触发器是数据库管理中不可或缺的重要概念,它们各自扮演着关键角色,确保数据的完整性和一致性。 **事务(Transactions)**是数据库操作的基本单位,它保证了一组操作要么...

    jdbc调用存储过程,函数,游标

    在IT行业中,数据库操作是不可或缺的一部分,而Java的JDBC(Java Database Connectivity)API则提供了与各种数据库交互的...通过阅读提供的博客链接,你将能获取更多关于JDBC调用存储过程和函数的实践经验及详细解释。

    sqlserver存储过程

    本文详细介绍了SQL Server中存储过程的创建、管理以及各种参数的使用方法,通过具体的示例让读者更好地理解和掌握存储过程的编写技巧。存储过程不仅可以提高数据处理的效率,还能增强应用程序的安全性和稳定性。希望...

    数据库源码(游标,存储过程)大全

    本资源集合提供了微软项目中的SQL实训资料,包含了存储过程及游标的源代码示例,同时也可能包括相关的课件,帮助我们深入理解和应用这些技术。 首先,我们来详细了解一下存储过程。存储过程是预编译的SQL语句集合,...

    游标嵌套 STATUS 异常 存储过程

    此存储过程中使用了游标嵌套的技术。主游标`CUR0`用于获取基础数据,而子游标`CUR`则用于更新具体的记录。通过这种方式可以逐条处理数据,使得代码更加灵活且易于管理。需要注意的是,游标操作可能会降低性能,因此...

    sqlserver存储过程解密算法

    根据提供的文件信息,本文将详细解析“SQL Server存储过程解密算法”的相关内容,重点在于如何理解和运用该解密算法。 ### 一、SQL Server 存储过程解密算法概述 在SQL Server数据库管理系统中,存储过程是一种预...

    SQL游标原理和使用方法.doc

    游标的使用类似于文件处理中的文件句柄,一旦游标被声明并成功打开,就可以通过它来访问结果集中的数据。游标能够实现按传统程序读取平面文件类似的方式处理来自基础表的结果集,从而把表中数据以平面文件的形式呈现...

    oracle安装详解及存储过程游标

    使用Oracle的JDBC驱动,你可以编写Java应用程序来执行存储过程、处理游标,以及进行复杂的数据库操作。 总的来说,Oracle数据库的安装、存储过程中的游标应用,以及数据库优化是数据库管理员和开发人员必须掌握的...

    Sql server 分页存储过程的性能对比

    值得注意的是,优化分页性能不仅要考虑存储过程的设计,还要关注索引的使用。合理的索引可以显著提高分页查询的速度,尤其是在处理大量数据时。同时,避免全表扫描,尽可能利用覆盖索引来减少I/O操作,也是提升性能...

    sql 游标详解

    4. **编程复杂性**:游标的使用增加了程序的复杂度,特别是涉及到循环和条件判断时。 #### 六、总结 游标是SQL语言中的一个重要特性,用于处理需要逐行处理的数据。合理使用游标可以简化复杂数据处理任务的实现,...

    SQL Server 存储过程的分页方案比拼

    本文将对比三种不同的SQL Server存储过程中的分页方案,以帮助你选择最适合你应用场景的方法。 ### 分页方案一:Not In + SELECT TOP 这种方法是通过`NOT IN`子句和`SELECT TOP`配合实现分页。首先,它获取前N个ID...

Global site tag (gtag.js) - Google Analytics