0 1

sqlserver2000动态游标的问题0

怎么解决sqlserver2000 中动态游标 top 后面跟变量??
  declare cur_votedept cursor  for select  top 10 * from sp_vote_dept_records   这样的 05是不会报错的
但是到2000中就报错了

这段代码
   declare cur_votedept cursor  for select  top 10 * from sp_vote_dept_records 

2005编译通过,但是2000中报错。

之后看网上的例子这样改了:
--declare @sqlExec  varchar(6000);  
                      --  set @sqlExec='declare cur_votedept cursor for 
                      --  select top ('+convert(varchar,@topnum)+') * FROM sp_vote_dept_records
                       --  where deptId='+@deptId+' and voteId='+@voteIdOut+' order by ticketNum desc';  
                       -- exec(@sqlExec);


但还是没用报错,求教。有MSSQL2000动态游标的例子那就好了。
2012年9月10日 14:21

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

0 0

采纳的答案


--使用游标遍历临时表#t
declare pcurr cursor for select sn,name,minc,maxc from #t 
open pcurr 
declare @psn varchar(20)
declare @pname varchar(20)
declare @pminc float
declare @pmaxc float
fetch next from pcurr into @psn,@pname,@pminc,@pmaxc
while (@@fetch_status = 0) 
begin
--每次创建一个临时表#t1,用后删除
CREATE TABLE #t1(
sn varchar(20),
name varchar(20),
credit float);
insert  #t1
select sn,name,credit from tbl_test_course where sn=@psn and name=@pname ;
--遍历#t1
declare pcurr1 cursor for select credit from #t1
open pcurr1 
declare @credit float
fetch next from pcurr1 into @credit
while (@@fetch_status = 0) 
begin
if @credit>@pmaxc
set @pmaxc=@credit
if @credit<@pminc
set @pminc=@credit
fetch next from pcurr1 into @credit
end 
--循环之后@pminc存储的最低分数,@pmaxc存储的最高分数将临时表的记录最修改即可
update #t set minc=@pminc,maxc=@pmaxc where sn=@psn and name=@pname;
close pcurr1 
deallocate pcurr1
drop table #t1;
fetch next from pcurr into @psn,@pname,@pminc,@pmaxc
end 
close pcurr 
deallocate pcurr
select * from #t
END

2012年9月10日 17:22
0 0

DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ]
其中
LOCAL
指定对于在其中创建的批处理、存储过程或触发器来说,该游标的作用域是局部的

2012年9月10日 14:41
0 0

SET NOCOUNT ON 
  
DECLARE @vendor_id int, @vendor_name nvarchar(50), 
@message varchar(80), @product nvarchar(50) 
  
PRINT -------- Vendor Products Report -------- 
  
DECLARE vendor_cursor CURSOR FOR  
SELECT VendorID, Name 
FROM Purchasing.Vendor 
WHERE PreferredVendorStatus = 1 
ORDER BY VendorID 
  
OPEN vendor_cursor 
  
FETCH NEXT FROM vendor_cursor  
INTO @vendor_id, @vendor_name 
  
WHILE @@FETCH_STATUS = 0 
BEGIN 
PRINT 
SELECT @message = ----- Products From Vendor: + 
@vendor_name 
  
PRINT @message 
  
-- Declare an inner cursor based   
-- on vendor_id from the outer cursor. 
  
DECLARE product_cursor CURSOR FOR  
SELECT v.Name 
FROM Purchasing.ProductVendor pv, Production.Product v 
WHERE pv.ProductID = v.ProductID AND 
pv.VendorID = @vendor_id-- Variable value from the outer cursor 
  
OPEN product_cursor 
FETCH NEXT FROM product_cursor INTO @product 
  
IF @@FETCH_STATUS <> 0  
PRINT          <<None>>     
  
WHILE @@FETCH_STATUS = 0 
BEGIN 
  
SELECT @message =          + @product 
PRINT @message 
FETCH NEXT FROM product_cursor INTO @product 
  
END 
  
CLOSE product_cursor 
DEALLOCATE product_cursor 
  
-- Get the next vendor. 
FETCH NEXT FROM vendor_cursor  
INTO @vendor_id, @vendor_name 
END  
CLOSE vendor_cursor 
DEALLOCATE vendor_cursor

2012年9月10日 14:27

相关推荐

    SqlServer存储过程游标

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

    SQL Server2000游标例子

    ### SQL Server 2000 游标应用详解 #### 标题与描述解析 本文主要探讨了在SQL Server 2000中如何利用游标处理数据,并通过一个具体的示例来展示游标的使用方法。 #### 核心知识点解析 ##### 1. 游标简介 在SQL ...

    SQL Server 游标用法

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

    sql server 游标试用方法 例子

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

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

    SQL Server提供四种类型的游标:静态、动态、快照和键集。静态游标在打开时一次性加载所有数据,不反映数据库的实时变化;动态游标则实时反映数据更改;快照游标类似于静态,但只在打开时获取数据的一次性快照;键集...

    SQL Server 游标的简单使用

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

    SqlServer存储过程、游标讲解

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

    SQL Server -事务和游标

    在SQL Server数据库管理系统中,事务和游标是两个非常重要的概念,它们对于数据操作和处理具有深远的影响。本文将深入探讨这两个主题,并解释如何利用它们解决日常数据库管理中遇到的复杂问题。 首先,我们来谈谈...

    sqlserver --游标 实现数据分页

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

    sql server 游标实例

    ### SQL Server 游标实例详解 #### 一、游标概念与作用 在SQL Server中,游标是一种数据库对象,允许我们逐行处理查询结果集中的数据。这与普通的SQL查询不同,在普通的查询中,结果集通常是作为一个整体来处理的。...

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

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

    Sqlserver游标拼接

    Sqlserver游标拼接学习,简单的游标学习,直接exec执行查看结果

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

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

    sqlserver游标存储过程的使用

    在SQL Server中,游标(Cursor)是一种数据库查询机制,它允许我们一次处理查询结果集中的单行数据,而不是一次性获取整个结果集。游标在处理大量数据时特别有用,尤其是当我们需要逐行进行操作或者根据当前行的值来...

    sqlserver2000jar包

    String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=myDB"; Connection conn = DriverManager.getConnection(url, "username", "password"); // 进行数据库操作... conn.close(); } catch ...

    SQLSREVER如何创建和使用动态游标

    SQL Server 中创建和使用动态游标的技术要点 在 SQL Server 中,创建和使用动态游标是一种高效的数据处理方式。本文将详细介绍如何创建和使用动态游标,包括存储过程的设计、游标的创建、数据的插入和查询等方面的...

    T-SQL程序设计与游标设计

    T-SQL 程序设计与游标设计 T-SQL 程序设计是数据库系统原理实验三的主要内容之一,它包括变量、流程控制命令、其他命令和常用函数四部分。 变量是 T-SQL 程序设计中的重要组成部分,有两种变量:局部变量和全局...

    sqlserver2005游标使用

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

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

    在SQL Server 2008中,存储过程与游标是数据库编程中常见的技术,用于实现复杂的业务逻辑和数据操作。下面将详细解析标题“sql server 2008 存储过程示例带游标”所涉及的知识点,包括存储过程的创建、游标的使用...

    sql server游标的使用

    sql server 游标 使用的使用方法 --读取数据(使用FETCH来获取该记录的值;FETCH会执行两步操作:首先将游标当前指向的记录保存到一个局部变量中, --然后游标将自动移向下一条记录) --将一条或多条记录读入某个...

Global site tag (gtag.js) - Google Analytics