`
星夜的遐想
  • 浏览: 186870 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

记录SQLSERVER的CURSOR的使用过程

阅读更多
ALTER PROCEDURE [dbo].[generateServDatas]
AS
BEGIN	
    declare  @sp_id varchar(50), --客户id
             @sold_to_code varchar(50), --客户编码
             @catg_id varchar(50), --客户分类id
             @catg_name varchar(100),--客户分类名称
             @serv_type varchar(50), --正常服务,特殊服务
             @department_code varchar(50), --部门编码
						 @bus_catg_code varchar(50), --业务大类编码
             @s_bus_catg_code varchar(50), --业务小类编码
             @recordCount int, --客户别记录数
             @currYear varchar(10), --当前年份
						 @currMoth varchar(10); --当前月份
    BEGIN
			select @currYear=convert(varchar(10),DATENAME(yy,getdate()));
      select @currMoth=convert(varchar(10),DATENAME(mm,getdate()));
		end 

		DECLARE rs CURSOR LOCAL SCROLL FOR
    select sp.id as sp_id,sp.sold_to_code,cg.id as catg_id ,cg.cust_catg_name from  t_base_cust_sp  sp , t_cust_catg  cg where sp.catg_id=cg.id;
		OPEN rs
		FETCH NEXT FROM  rs INTO @sp_id,@sold_to_code,@catg_id,@catg_name
		WHILE @@FETCH_STATUS = 0
		BEGIN
		print(@sp_id+''+@sold_to_code+''+@catg_id+''+@catg_name);
			select @recordCount=count(t.id) from t_data_cust_serv_relation_sp t where t.type='客户别' and t.cust_id=@sp_id
			if (@recordCount=0)
				begin  
						DECLARE catg_serv_cursor CURSOR LOCAL SCROLL FOR 
							select t.department_code,t.business_category_code,t.sbusiness_category_code from t_data_extra_service t,t_data_cust_serv_relation_sp tr where t.id=tr.serv_id and tr.type='分类别' and tr.cust_catg_id=@catg_id group by  t.department_code,t.business_category_code,t.sbusiness_category_code;
						open catg_serv_cursor
							FETCH NEXT FROM  catg_serv_cursor INTO @department_code,@bus_catg_code,@s_bus_catg_code
						WHILE @@FETCH_STATUS = 0
							BEGIN
							print(@department_code+''+@bus_catg_code+''+@s_bus_catg_code);
								BEGIN
								 insert into t_serv_month_report(sp_id,sold_to_code,catg_id,catg_name,serv_type,department_code,bus_catg_code,s_bus_catg_code,create_year,create_month) 
																								values (@sp_id,@sold_to_code,@catg_id,@catg_name,'正常服务区分',@department_code,@bus_catg_code,@s_bus_catg_code,@currYear,@currMoth);
								END
							FETCH NEXT FROM catg_serv_cursor INTO @department_code,@bus_catg_code,@s_bus_catg_code
							END
						CLOSE catg_serv_cursor
            DEALLOCATE catg_serv_cursor
				end
      ELSE
				BEGIN
						DECLARE cust_serv_cursor CURSOR LOCAL SCROLL FOR 
							select t.department_code,t.business_category_code,t.sbusiness_category_code from t_data_extra_service t,t_data_cust_serv_relation_sp tr where t.id=tr.serv_id and tr.type='客户别' and tr.cust_id=@sp_id group by  t.department_code,t.business_category_code,t.sbusiness_category_code;
						open cust_serv_cursor
						FETCH NEXT FROM  cust_serv_cursor INTO @department_code,@bus_catg_code,@s_bus_catg_code
						WHILE @@FETCH_STATUS = 0
							BEGIN
							print(@department_code+''+@bus_catg_code+''+@s_bus_catg_code);
								BEGIN
								 insert into t_serv_month_report(sp_id,sold_to_code,catg_id,catg_name,serv_type,department_code,bus_catg_code,s_bus_catg_code,create_year,create_month) 
																								values (@sp_id,@sold_to_code,@catg_id,@catg_name,'特殊服务区分',@department_code,@bus_catg_code,@s_bus_catg_code,@currYear,@currMoth);
								END
							FETCH NEXT FROM cust_serv_cursor INTO @department_code,@bus_catg_code,@s_bus_catg_code
							END
					CLOSE cust_serv_cursor
          DEALLOCATE cust_serv_cursor

					
				END
				
	  FETCH NEXT FROM rs INTO @sp_id,@sold_to_code,@catg_id,@catg_name
		END
		CLOSE rs
    DEALLOCATE rs

 

分享到:
评论

相关推荐

    SQL Server遍历表中记录的2种方法(使用表变量和游标)

    总结,遍历SQL Server表中的记录,可以采用表变量配合循环的方式,或者使用游标。表变量方法简洁且对数据的影响可控,但可能需要额外删除已处理的行。游标提供了逐行处理的灵活性,但效率较低,应作为最后的手段。在...

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

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

    PostgreSQL_与_MS_SQLServer比较

    在 **MS SQL Server** 中,使用 `CREATE PROCEDURE` 或 `CREATE FUNCTION` 创建存储过程或函数,并通过 `EXECUTE` 调用它们。在 **PostgreSQL** 中,则使用 `CREATE OR REPLACE FUNCTION` 创建函数,并使用 `CALL` ...

    SQL SERVER 创建数据库SQL SERVER 创建数据库SQL SERVER 创建数据库

    - 使用 SQL Server 企业管理器:使用企业管理器创建数据库,定义数据库的名字、大小、文件路径等信息。 - 在查询分析器中输入 CREATE DATABASE 语句:使用 CREATE DATABASE 语句创建数据库,定义数据库的名字、...

    SQLServer 批量禁用、启用登录账号

    ##### 4.1 使用T-SQL脚本 假设有一个包含多个登录名的列表,我们可以编写一个T-SQL脚本来批量处理这些登录账号。 ###### 4.1.1 禁用登录账号 ```sql DECLARE @loginName VARCHAR(128); DECLARE login_cursor ...

    SQLSERVER 存储过程 语法

    本文将深入解析SQL Server存储过程的创建、参数传递、事务管理、条件判断以及游标使用的语法细节。 #### 创建存储过程 存储过程的基本语法如下: ```sql CREATE PROCEDURE 存储过程名称 @参数1 数据类型, @参数...

    oracle与SQL server的语法差异总结

    - SQL Server中,使用 `CREATE PROCEDURE 存储过程名 (参数列表) AS...`,参数需要指定长度,出参需使用OUTPUT或OUT关键字。调用存储过程时,需要在过程名前加上EXEC关键字。 3. **自定义函数**: - Oracle函数...

    sql server 2008 存储过程示例带游标

    下面将详细解析标题“sql server 2008 存储过程示例带游标”所涉及的知识点,包括存储过程的创建、游标的使用以及SQL Server 2008中的特性。 ### 存储过程 存储过程是预编译的SQL语句集合,存储在数据库服务器上,...

    sql server 2005 批量导出照片代码

    此过程涉及到了SQL查询、游标(Cursor)的使用以及系统存储过程`xp_cmdshell`来执行文件操作。 ### SQL Server 2005 批量导出照片代码分析 #### 知识点一:SQL Server 2005 数据库操作 1. **数据库选择**: ```...

    SQLServer实用教程(第三版)实验7存储过程和触发器的使用.pdf

    本教程旨在帮助读者掌握 SQL Server 中的存储过程和触发器的使用。通过实验和实践,读者将了解存储过程和触发器的定义、创建、执行和应用。 存储过程的使用 存储过程是一种预编译的 SQL 语句集,可以重复使用,以...

    SQLServer 常用存储过程

    ### SQL Server 常用存储过程详解 #### 一、分页存储过程 GetRecordSet 在 SQL Server 中,实现分页功能是...以上是 SQL Server 中一些常用的存储过程及其使用方法,它们可以帮助开发者更高效地管理和操作数据库。

    MS SQL Server2005存储过程、游标、游标嵌套综合例子

    在提供的示例文件`sqlserver2005_procedure_cursor_sample_20101015.sql`中,很可能是包含了存储过程的定义,这些存储过程可能涉及到游标的使用,甚至游标嵌套,以解决特定的业务问题。通常,这样的示例会展示如何在...

    学习PB与SQL Server数据库的连接

    通过本实验的学习,不仅能够掌握PB与SQL Server数据库的连接方法,还能深入理解游标的使用技巧。这对于实际项目开发中高效地处理数据库操作具有重要意义。此外,通过亲手实践,还可以加深对PB开发环境的理解,提高...

    sqlserver常用的存储过程

    ### SQL Server 常用的存储过程详解 在数据库管理与开发过程中,存储过程作为一种预编译的对象,能够显著提高数据库应用的性能,并且能够更好地实现业务逻辑的封装。SQL Server 提供了一系列丰富的内置存储过程以及...

    SqlServer存储过程、游标讲解

    在SqlServer中,使用游标一般包含以下几个步骤:声明游标、打开游标、读取数据、关闭游标以及删除游标。声明游标时可以使用简单的查询,也可以是复杂的连接查询或者嵌套查询。游标被声明后,必须先打开才能从中读取...

    SQL SERVER 2005 安装使用问题记录

    ### SQL Server 2005 安装与使用问题记录 #### 一、概述 本文主要分享了在安装和配置 Microsoft SQL Server 2005 过程中遇到的一些问题及解决方案,希望能够帮助到同样面临这些问题的技术人员或数据库管理员。 ##...

    标准SQLServer分页存储过程

    ### 标准SQL Server分页存储过程:深入解析与应用 在处理大量数据时,分页技术是提高数据展示效率和用户体验的关键。SQL Server提供的存储过程是实现分页功能的有效方式之一。本文将深入探讨微软C# .NET中的宠物...

    SQLServer实用SQL语句大全

    本资料"SQLServer实用SQL语句大全"是一份全面的手册,旨在帮助用户理解和掌握SQL Server中的SQL语法和函数。 一、SQL基本操作 1. 数据查询:SQL的SELECT语句是用于从数据库中检索数据的核心命令。通过指定列名、...

    sqlserver存储过程

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

Global site tag (gtag.js) - Google Analytics