内含游标的存储过程实例

第一种写法

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. magento中取不同store中的产品数据

    $products = Mage::getResourceModel('catalog/product_collection')                    ->setStoreId( ...

  2. 【转】 LESS CSS 框架简介

    简介 CSS(层叠样式表)是一门历史悠久的标记性语言,同 HTML 一道,被广泛应用于万维网(World Wide Web)中.HTML 主要负责文档结构的定义,CSS 负责文档表现形式或样式的定义. ...

  3. node.js(七) 子进程 child_process模块

    众所周知node.js是基于单线程模型架构,这样的设计可以带来高效的CPU利用率,但是无法却利用多个核心的CPU,为了解决这个问题,node.js提供了child_process模块,通过多进程来实现 ...

  4. foreach真的比for性能高吗

    void Main() { ; List<int> list=new List<int>(); ;i<count;i++) { list.Add(i); } List&l ...

  5. CentOS添加中科大、163 yum源

    首先备份CentOS-Base.repo [root@richard yum.repos.d]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos ...

  6. C# 调用其他的动态库开发应注意的问题

    1.背景 程序开发语言可以说是五花八门,这就引出了一个新问题 ,不同语言开发的系统进行对接时相关调用的问题. 下面我主要说一下我自己在做接口开发时遇到的问题及解决方法仅供参考,我使用的C#开发进行对接 ...

  7. java -Xms -Xmx -XX:PermSize -XX:MaxPermSize

    java  -Xms -Xmx -XX:PermSize -XX:MaxPermSize     在做java开发时尤其是大型软件开发时经常会遇到内存溢出的问题,比如说OutOfMemoryError ...

  8. EC读书笔记系列之12:条款22、23、24

    条款22 将成员变量声明为private 记住: ★切记将成员变量声明为private.这可赋予客户访问数据的一致性.可细微划分访问控制.允诺约束条件获得保证,并提供class作者以充分的实现弹性. ...

  9. Centos for php+mysql+apache

    一.安装 MySQL 首先来进行 MySQL 的安装.打开超级终端,输入: [root@localhost ~]# yum install mysql mysql-server 安装完毕,让 MySQ ...

  10. UIWebViewでローカルにあるHTMLを表示する&iOS6からtextAlignmentで指定する値が変更になった

    [objective-c]UIWebViewでローカルにあるHTMLを表示する xcode内にHTMLを格納して.そのHTMLをWebViewで表示する方法です. // UIWebViewの初期化UI ...