0 0

sqlserver 存储过程,游标嵌套死循环,求指导。0

if(OBJECT_ID('pro_fristCount','P') is not null)  
    drop procedure  pro_fristCount;
    
go
create procedure  pro_fristCount 
as
create table #depe_records(   -- 创建临时表
	deptId nvarchar(100),
	deptName nvarchar(100),
	itemId nvarchar(100),
	itemName nvarchar(100),
	ticketNum int,
	voteId nvarchar(100)
);
declare @temp_deptId nvarchar(100),@temp_deptName nvarchar(100),@temp_itemId nvarchar(100),@temp_itemName nvarchar(100),@temp_ticketNum int,@temp_voteId nvarchar(100);--临时表数据
declare @deptId nvarchar(100);
declare cur_group cursor  for select deptId from sp_vote_dept_records ;--按照部门分组
open cur_group 
fetch next from cur_group into @deptId;
while(@@FETCH_STATUS=0)  
	begin  
		print @deptId;
		declare cur_votedept cursor  for select  top 10 * from sp_vote_dept_records 
			where deptId=@deptId order by deptId desc ;--每个部门的十件大事
		open cur_votedept  
		fetch next from cur_votedept into @temp_deptId,@temp_deptName,@temp_itemId,@temp_itemName,@temp_ticketNum,@temp_voteId;
			while(@@FETCH_STATUS=0) 
					begin
						print @temp_deptId+@temp_deptName+@temp_itemId;
						insert into #depe_records values(@temp_deptId,@temp_deptName,@temp_itemId,@temp_itemName,@temp_ticketNum,@temp_voteId);
					end
			fetch next from c_showuser into @temp_deptId,@temp_deptName,@temp_itemId,@temp_ticketNum,@temp_voteId;
			close c_showuser;  
			deallocate cur_votedept    
		fetch next from cur_group into @deptId;  
	end  
close cur_group
deallocate cur_group 
return select * from  #depe_records; 


第二个游标只会遍历不大于十条是数据,但是却总是死循环。
2012年8月30日 09:43

1个答案 按时间排序 按投票排序

0 0

采纳的答案

你的第二个游标结束时的c_showuser哪来的?是不是写错了?
这个:
fetch next from c_showuser into @temp_deptId,@temp_deptName,@temp_itemId,@temp_ticketNum,@temp_voteId;
还有你的结束时的fetch是不是要写在begin end里面?
这段是不是要改成这样:

 open cur_votedept  
    fetch next from cur_votedept into @temp_deptId,@temp_deptName,@temp_itemId,@temp_itemName,@temp_ticketNum,@temp_voteId;
      while(@@FETCH_STATUS=0) 
          begin
            print @temp_deptId+@temp_deptName+@temp_itemId;
            insert into #depe_records values(@temp_deptId,@temp_deptName,@temp_itemId,@temp_itemName,@temp_ticketNum,@temp_voteId);
            fetch next from cur_votedept into @temp_deptId,@temp_deptName,@temp_itemId,@temp_ticketNum,@temp_voteId;
          end
      close cur_votedept;  
      deallocate cur_votedept    

2012年8月30日 10:13

相关推荐

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

    本篇将深入探讨SQL Server 2005中的存储过程、游标以及游标嵌套的综合应用。 存储过程(Stored Procedure)是预编译的SQL语句集合,它们封装了特定的功能,可以多次调用,提高了代码的复用性和执行效率。在SQL ...

    SqlServer存储过程游标

    ### SqlServer 存储过程与游标应用实例详解 #### 一、存储过程概述 在SQL Server中,存储过程是一种预编译的SQL语句集合,它可以被当作一个单独的对象来调用。存储过程可以提高应用程序性能,简化复杂的业务逻辑,...

    游标嵌套 STATUS 异常 存储过程

    本示例提供了一个关于存储过程、异常处理、错误消息返回、游标嵌套及其相关问题解决的综合案例。通过这些知识点的学习,初学者可以更好地理解和掌握如何编写健壮、高效的数据库应用程序。同时,对于更高级的应用场景...

    SQL Server存储过程之嵌套游标

    下面是一个订单取消的含2个游标的存储过程 set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER PROCEDURE [dbo].[CancelOrderBySystem] AS BEGIN declare /*声明变量*/ @Status varchar(100), –状态 ...

    SqlServer存储过程、游标讲解

    游标是SqlServer中一种非常重要的数据库对象,它的作用是允许逐行访问由SQL Server返回的结果集。结果集通常包括多行数据,而游标则能够让用户以程序的方式逐行处理这些数据。在实际应用中,游标能够提供很多有用的...

    sqlserver游标存储过程的使用

    本篇文章将深入探讨SQL Server中游标的使用,以及如何在存储过程中集成游标。 首先,我们需要了解游标的几个基本概念: 1. 游标的类型:包括静态、动态、键集和只进。静态游标在打开时加载所有数据,数据更改不会...

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

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

    SqlServer存储过程及调试指南

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

    SQL对游标嵌套的应用

    SQL对游标嵌套的应用 学校宿舍管理系统(实际上是个子系统): 包括以下几个表: 楼栋表;楼层表;房间表;学员住宿表 脚本如下: --楼栋表

    sql存储过程和游标的运用

    SQL存储过程和游标的运用 SQL存储过程和游标是SQL语言中两个非常重要的概念,它们可以帮助开发者更好地管理和处理数据。在本节中,我们将详细介绍存储过程和游标的基本概念和应用。 什么是存储过程 存储过程是一...

    SQL Server 游标用法

    在SQL Server中,游标是一种重要的工具,它允许我们逐行处理查询结果集,而不仅仅是一次性获取所有数据。游标提供了在结果集中向前或向后移动的能力,这在某些复杂的数据处理任务中非常有用。本篇文章将深入探讨SQL ...

    SQL SERVER中的存储过程和游标的使用大综合

    在SQL Server中,存储过程和游标是两个重要的数据库编程元素,它们对于数据操作和管理起着关键作用。本文将深入探讨这两个概念,以及如何在实际应用中有效地使用它们。 **存储过程(Stored Procedures)** 存储...

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

    表变量在SQL Server中是一种临时存储数据的结构,它与临时表相似但作用范围更小,仅限于当前批处理或存储过程。以下是一个使用表变量的例子: ```sql DECLARE @temp TABLE (id INT IDENTITY(1, 1), Name VARCHAR(10...

    sql server 游标试用方法 例子

    在SQL Server中,游标是一种数据处理工具,它允许我们逐行处理查询结果集,而不仅仅是一次性返回所有数据。游标对于那些需要按顺序处理数据、分步操作或逐条检查结果的应用场景非常有用。本篇文章将深入探讨SQL ...

    mysql游标嵌套[文].pdf

    * 游标嵌套需要合理使用,避免出现死循环。 * 游标嵌套需要与其他数据库对象进行协调,避免出现冲突。 五、结论 游标嵌套是 MySQL 中的一个强大功能,可以实现复杂的数据操作。通过合理使用游标嵌套,可以提高数据...

    sqlserver2005游标使用

    游标循环数据库,游标循环数据库游标循环数据库游标循环数据库

    sql server 游标循环操作

    循环遍历逐行操作

    sqlserver --游标 实现数据分页

    在给定的代码示例中,作者通过创建一个存储过程`proc_cursor`来实现基于游标的分页功能,这种方法虽然在某些场景下可能不如其他方法高效,但在理解SQL Server游标和分页原理方面提供了很好的学习材料。 ### 数据库...

    SQL Server 游标的简单使用

    一、SQL server 游标的简单使用 一个对表进行操作的T-SQL语句通常都可产生或处理一组记录,但是许多应用程序,尤其是T-SQL嵌入的主语言,通常不能把整个结果集作为一个单元来处理,这些应用程序就需要用一种机制来...

    SQLServer数据库游标和函数的使用(经典)

    在SQL Server中,数据库游标和函数是两个非常重要的概念,它们在数据处理和数据库操作中扮演着不可或缺的角色。游标允许我们逐行处理查询结果,而函数则提供了丰富的计算和逻辑处理能力。 首先,让我们深入理解SQL ...

Global site tag (gtag.js) - Google Analytics