-
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个答案 按时间排序 按投票排序
-
采纳的答案
--使用游标遍历临时表#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
END2012年9月10日 17:22
-
DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ]
其中
LOCAL
指定对于在其中创建的批处理、存储过程或触发器来说,该游标的作用域是局部的2012年9月10日 14:41
-
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 存储过程与游标应用实例详解 #### 一、存储过程概述 在SQL Server中,存储过程是一种预编译的SQL语句集合,它可以被当作一个单独的对象来调用。存储过程可以提高应用程序性能,简化复杂的业务逻辑,...
### SQL Server 2000 游标应用详解 #### 标题与描述解析 本文主要探讨了在SQL Server 2000中如何利用游标处理数据,并通过一个具体的示例来展示游标的使用方法。 #### 核心知识点解析 ##### 1. 游标简介 在SQL ...
在SQL Server中,游标是一种重要的工具,它允许我们逐行处理查询结果集,而不仅仅是一次性获取所有数据。游标提供了在结果集中向前或向后移动的能力,这在某些复杂的数据处理任务中非常有用。本篇文章将深入探讨SQL ...
在SQL Server中,游标是一种数据处理工具,它允许我们逐行处理查询结果集,而不仅仅是一次性返回所有数据。游标对于那些需要按顺序处理数据、分步操作或逐条检查结果的应用场景非常有用。本篇文章将深入探讨SQL ...
SQL Server提供四种类型的游标:静态、动态、快照和键集。静态游标在打开时一次性加载所有数据,不反映数据库的实时变化;动态游标则实时反映数据更改;快照游标类似于静态,但只在打开时获取数据的一次性快照;键集...
一、SQL server 游标的简单使用 一个对表进行操作的T-SQL语句通常都可产生或处理一组记录,但是许多应用程序,尤其是T-SQL嵌入的主语言,通常不能把整个结果集作为一个单元来处理,这些应用程序就需要用一种机制来...
游标是SqlServer中一种非常重要的数据库对象,它的作用是允许逐行访问由SQL Server返回的结果集。结果集通常包括多行数据,而游标则能够让用户以程序的方式逐行处理这些数据。在实际应用中,游标能够提供很多有用的...
在SQL Server数据库管理系统中,事务和游标是两个非常重要的概念,它们对于数据操作和处理具有深远的影响。本文将深入探讨这两个主题,并解释如何利用它们解决日常数据库管理中遇到的复杂问题。 首先,我们来谈谈...
在给定的代码示例中,作者通过创建一个存储过程`proc_cursor`来实现基于游标的分页功能,这种方法虽然在某些场景下可能不如其他方法高效,但在理解SQL Server游标和分页原理方面提供了很好的学习材料。 ### 数据库...
### SQL Server 游标实例详解 #### 一、游标概念与作用 在SQL Server中,游标是一种数据库对象,允许我们逐行处理查询结果集中的数据。这与普通的SQL查询不同,在普通的查询中,结果集通常是作为一个整体来处理的。...
总结,遍历SQL Server表中的记录,可以采用表变量配合循环的方式,或者使用游标。表变量方法简洁且对数据的影响可控,但可能需要额外删除已处理的行。游标提供了逐行处理的灵活性,但效率较低,应作为最后的手段。在...
Sqlserver游标拼接学习,简单的游标学习,直接exec执行查看结果
在提供的示例文件`sqlserver2005_procedure_cursor_sample_20101015.sql`中,很可能是包含了存储过程的定义,这些存储过程可能涉及到游标的使用,甚至游标嵌套,以解决特定的业务问题。通常,这样的示例会展示如何在...
在SQL Server中,游标(Cursor)是一种数据库查询机制,它允许我们一次处理查询结果集中的单行数据,而不是一次性获取整个结果集。游标在处理大量数据时特别有用,尤其是当我们需要逐行进行操作或者根据当前行的值来...
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=myDB"; Connection conn = DriverManager.getConnection(url, "username", "password"); // 进行数据库操作... conn.close(); } catch ...
SQL Server 中创建和使用动态游标的技术要点 在 SQL Server 中,创建和使用动态游标是一种高效的数据处理方式。本文将详细介绍如何创建和使用动态游标,包括存储过程的设计、游标的创建、数据的插入和查询等方面的...
T-SQL 程序设计与游标设计 T-SQL 程序设计是数据库系统原理实验三的主要内容之一,它包括变量、流程控制命令、其他命令和常用函数四部分。 变量是 T-SQL 程序设计中的重要组成部分,有两种变量:局部变量和全局...
游标循环数据库,游标循环数据库游标循环数据库游标循环数据库
在SQL Server 2008中,存储过程与游标是数据库编程中常见的技术,用于实现复杂的业务逻辑和数据操作。下面将详细解析标题“sql server 2008 存储过程示例带游标”所涉及的知识点,包括存储过程的创建、游标的使用...
sql server 游标 使用的使用方法 --读取数据(使用FETCH来获取该记录的值;FETCH会执行两步操作:首先将游标当前指向的记录保存到一个局部变量中, --然后游标将自动移向下一条记录) --将一条或多条记录读入某个...