mssql游标

原创 2016年05月31日 16:45:51

1,使用过程返回游标

CREATE PROCEDURE P_PRO1
	@O_CUR_RESULT  CURSOR VARYING OUTPUT
AS
BEGIN
	SET @O_CUR_RESULT = CURSOR 
 	FORWARD_ONLY  STATIC    
          FOR   
             SELECT XXX
	
	OPEN @O_CUR_RESULT
END

2,使用游标

-- 声明
DECLARE @L_ID INT,@L_NAME
DECLARE cur CURSOR FOR
SELECT ID,NAME FROM XXX
-- 这里或者是执行一个过程返回的游标
DECLARE @CURSOR_Result CURSOR
EXEC P_PRO1 @O_CUR_RESULT = @CURSOR_Result OUTPUT
-- 打开
OPEN cur

-- 去记录
FETCH FROM cur INTO @L_ID,@L_NAME -- 这里或者是FETCH FROM @CURSOR_Result INTO xxx
-- 循环
WHILE @@FETCH_STATUS = 0
 BEGIN
   ...
 FETCH FROM cur INTO @L_ID,@L_NAME	
 END
-- 销毁
CLOSE cur
DEALLOCATE cur

还有一种过程中使用动态拼接游标,参考网络,但是没用过:

DECLARE @SQLS    NVARCHAR(4000)    --拼接sql语句  
SET @SQLS = 'select  top '+cast(@TOP as varchar(10))+' id,name from XXX'
 
SET @SQLS='DECLARE cur CURSOR FOR '+@SQLS  
 EXEC(@SQLS)  
 OPEN cur
 FETCH NEXT FROM cur INTO @l_ID,@L_NAME


MSSQL游标使用

了解游标        游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是 与一条T_SQL 选择语句相关...

【MSSql2000】游标

if object_id('tempdb..#StuScore') is null create table #StuScore ( [StuScoreID] [int]IDENTITY (...
  • csdou
  • csdou
  • 2011年11月13日 15:27
  • 297

mssql数据库游标批量修改符合条件的记录

//需求:由于项目刚上传,没有票数,为了表现出一定的人气,需要在一开始把各项目的票数赋一个值 , 但每个项目不能一样,否则容易看出问题,呵呵 。 DECLARE @Id varchar(50) ...

mssql方便的函数使用与游标使用练习

结果:     新建函数: GO /****** 对象: UserDefinedFunction [dbo].[fun_get_class_nam] 脚本日期: 07/28/20...

mssql游标的简单应用

--游标修改数据 declare alarm_cursor cursor global SCROLL for select lsc_id,station_id,alarm_time,clear_tim...

MSSQL之游标的用法

再来看看MSSQL中的游标。 我们知道所有SQL语句都在行集上运行。SELECT语句返回包含所有满足SELECT语句限定条件的行的完整结果集。应用程序需要一次处理结果集的一行或一个行块。游标是结果集...

游标的使用和存储过程的建立

  • 2017年11月30日 14:36
  • 132KB
  • 下载

Oracle游标使用详解

  • 2011年07月06日 10:21
  • 4KB
  • 下载

一个将Access数据库转成Mssql数据库的简单工具

frmMain.cspublic partial class frmMain : Form { private Thread TransferWorkerThread = nu...
  • WuLex
  • WuLex
  • 2017年07月28日 10:01
  • 357

函数、游标及DB设计

  • 2011年05月14日 16:23
  • 9KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mssql游标
举报原因:
原因补充:

(最多只允许输入30个字)