内含游标的存储过程实例

第一种写法

GO
BEGIN
IF (object_id('PT_FAULT_REPORT', 'P') is not null)
drop proc PT_FAULT_REPORT;
END
GO
CREATE PROCEDURE PT_FAULT_REPORT
(@index int,
@stop_time DATETIME,
@start_time DATETIME)
AS
DECLARE
@departmentindex int,
@departmentname nvarchar(100),
@entitycount int,
@allcount int,
@fixtime int,
@fixcount int;
declare test_cur cursor for
select field1, field2, field3, field4 form table where field1=@index and
field2>@stop_time or filed3<@start_time ;
OPEN test_cur;
DECLARE @TableTemp TABLE(departmentindex int,departmentname nvarchar(100),entitycount int,allcount int,fixtime int,fixcount int);--定义表变量
FETCH NEXT FROM test_cur INTO @departmentindex, @departmentname, @entitycount, @allcount, @fixtime,@fixcount;
INsert @TableTemp values(@departmentindex, @departmentname, @entitycount, @allcount, @fixtime,@fixcount);--给表变量插值
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM test_cur INTO @departmentindex, @departmentname, @entitycount, @allcount, @fixtime,@fixcount;
INsert @TableTemp values(@departmentindex, @departmentname, @entitycount, @allcount, @fixtime,@fixcount);
--select departmentindex=@departmentindex, departmentname=@departmentname,entitycount=@entitycount, allcount=@allcount, fixtime=@fixtime,fixcount=@fixcount;
END ;
CLOSe test_cur
Deallocate test_cur;
select * from @TableTemp;--存储过程返回数据

测试存储过程

GO
DECLARE @starttime DATETIME,@endtime DATETIME;
set @starttime =GETDATE();
set @endtime=GETDATE()-30;
EXEC PT_FAULT_REPORT 3,@starttime,@endtime;

第二种传游标写法

 GO
BEGIN
IF (object_id('PT_FAULT_REPORT', 'P') is not null)
drop proc PT_FAULT_REPORT;
END
GO
CREATE PROCEDURE PT_FAULT_REPORT
(@business_index INTEGER , @start_time DATETIME , @stop_time DATETIME, @ds_cur CURSOR VARYING OUTPUT)
AS
BEGIN
SET @ds_cur = CURSOR
FORWARD_ONLY STATIC FOR
select field1, field2, field3, field4 form table where field1=@index and
field2>@stop_time or filed3<@start_time ;
OPEN @ds_cur
END;

  测试存储过程

GO
DECLARE @MyCursor CURSOR,@starttime DATETIME,@endtime DATETIME;
set @starttime =GETDATE();
set @endtime=GETDATE()-30;
EXEC PT_FAULT_REPORT 3,@starttime,@endtime,@ds_cur = @MyCursor OUTPUT;
FETCH NEXT FROM @MyCursor;
WHILE (@@FETCH_STATUS = 0)
BEGIN;
FETCH NEXT FROM @MyCursor;
END;
CLOSE @MyCursor;
DEALLOCATE @MyCursor;

  第三种写法(测试方法与第一种相似)

 GO
BEGIN
IF (object_id('PT_FAULT_REPORT', 'P') is not null)
drop proc PT_FAULT_REPORT;
END
GO
CREATE PROCEDURE PT_FAULT_REPORT
(@business_index int,
@stop_time DATETIME,
@start_time DATETIME)
AS
select * from table

1SQL Server 表变量和临时表的区别

http://www.cnblogs.com/kissdodog/archive/2013/07/03/3169470.html

 

2SQL Server存储过程Return、output参数及使用技巧

http://www.cnblogs.com/zhangchenliang/archive/2013/04/07/3006433.html

3sql2005 返回游标参数的存储过程 【CURSOR VARYING OUTPUT】

http://blog.csdn.net/paolei/article/details/6206004

4SqlServer游标、存储过程及数据块执行

http://blog.csdn.net/superhoy/article/details/7663542

SQL Server存储过程和游标有关实例以及相关网址的更多相关文章

  1. sql server 存储过程使用游标记录

    sql server 存储过程使用游标记录--方便下次参考使用 游标的组成: 声明游标 打卡游标 从一个游标中查找信息 关闭游标 释放游标 游标类型: 静态游标 动态游标 只进游标 键集驱动游标 静态 ...

  2. Sql Server存储过程和游标的配合操作

    本段代码主要为了记录存储过程以及游标的使用,防止以后自己忘记 知识点:1.存储过程书写 2.游标书写 3.游标循环更新记录 create proc saletargetas declare @ower ...

  3. SQL Server 存储过程具体解释

    SQL Server 存储过程具体解释 存储过程的优缺点 ◆长处: 运行速度更快. 存储过程仅仅在创造时进行编译,而一般SQL语句每运行一次就编译一次,所以使用存储过程运行速度更快. 存储过程用于处理 ...

  4. SQL Server基础之游标

    查询语句可能返回多条记录,如果数据量非常大,需要使用游标来逐条读取查询结果集中的记录.应用程序可以根据需要滚动或浏览其中的数据.本篇介绍游标的概念.分类.以及基本操作等内容. 一:认识游标   游标是 ...

  5. SQL Server存储过程Return、output参数及使用技巧

    SQL Server目前正日益成为WindowNT操作系统上面最为重要的一种数据库管理系统,随着 SQL Server2000的推出,微软的这种数据库服务系统真正地实现了在WindowsNT/2000 ...

  6. SQL Server 存储过程(转载)

    SQL Server 存储过程 Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这 ...

  7. (摘录)SQL Server 存储过程

    文章摘录:http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html SQL Server 存储过程 Transact-SQL中的存储过程 ...

  8. C# 调用存储过程 Sql Server存储过程 存储过程报错,程序中的try

    C#程序调用Sql Server存储过程,存储过程中报错情况,返回值... 0.SQL存储过程 USE [Opos] GO /****** Object: StoredProcedure [dbo]. ...

  9. Microsoft SQL Server 存储过程

    Microsoft SQL Server 存储过程 TRIGGER DDL触发器:主要用于防止对数据库架构.视图.表.存储过程等进行的某些修改:DDL事件是指对数据库CREATE,ALTER,DROP ...

随机推荐

  1. C++ Primer 学习笔记_85_模板与泛型编程 --模板特化[续]

    模板与泛型编程 --模板特化[续] 三.特化成员而不特化类 除了特化整个模板之外,还能够仅仅特化push和pop成员.我们将特化push成员以复制字符数组,而且特化pop成员以释放该副本使用的内存: ...

  2. CSS中zoom和scale的区别

    zoom和scale这两个东西都是用于对元素的缩放,但两者除了兼容性之外还有一些不同的地方.zoom缩放会将元素保持在左上角,而scale默认是中间位置,可以通过transform-origin来设置 ...

  3. c++中冒号(:)和双冒号(::)的用法

    1.冒号(:)用法 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef struct _XXX{ unsigned ; unsigned char c; } ; XXX (2)构造 ...

  4. SQL游标+递归查询客户子客户转换率

    ALTER PROCEDURE [dbo].[Account3YearsConversion ] as DECLARE @AccountId UNIQUEIDENTIFIER , @yearbefor ...

  5. Mysql Cluster 集群 windows版本

    VM1:192.168.220.102 管理节点(MGM) VM2:192.168.220.103 数据节点(NDBD1),SQL节点(SQL1) VM3:192.168.220.104 数据节点(N ...

  6. 如何实现select组件的选择输入过滤作用

    实现select组件的选择输入过滤作用的js代码如下: /** *其中//******之间的部分显示的是在没有选择输入过滤功能的代码上加入的功能代码 ** / (function ( $ ) { $. ...

  7. HTTP协议中keep-alive

    一 . http协议是有连接的协议,这样每一个连接过来都要重新打开一个tcp的http socket,短期内同一个host 对服务器的请求就会很慢,若是能够保持住连接,就可以节省socket open ...

  8. crt 糟心的配置

    每次要下载安装crt就要捣鼓半天,各种注册机下来各种问题,顺手记录下刚打通的一个 1.crt 下载 网上看了一遍博客: SecureCRT 7.3.4破解版(含注册机), 下载下来后里面其实是不含注册 ...

  9. python 日期、时间戳转换

    获取当前日期: from datetime import datetime IN:datetime.now() OUT:datetime(2016,10,19,6,51,21,72341) 转化为字符 ...

  10. SQL Server 权限的分类

    SQL Server 的权限可以分三类 第一类 server 层面上的: select * from sys.fn_builtin_permissions(default) where class_d ...