zoukankan      html  css  js  c++  java
  • SQL Server游标+延迟执行简介

    在项目测试中,我们可能会使用批量生成数据来测试程序的性能。

    这里讲一个我遇到的问题,由于我们批量生成数据时基本上是瞬间完成,所以GETDATE()函数获得的时间基本上也是一样的,而我们又要求生成每条数据的时间不同,那么如何来解决这个问题?

    网上搜索了很多,这里我是使用游标+waitfor来处理的:

    首先来讲下游标,因为个人也是才使用游标,而且也没有深入研究。

    那么游标是用来干什么的呢?一般我们使用游标是用来对查询出来的结果集进行处理的(修改,新增...)。

    T-SQL中的游标定义在MSDN中如下:

    DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ]
    [ FORWARD_ONLY | SCROLL ]
    [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
    [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
    [ TYPE_WARNING ]
    FOR select_statement
    [ FOR UPDATE [ OF column_name [ ,...n ] ] ]
    [;]


    游标的简单定义:declare 游标名 cursor for 结果集

    开启游标:open 游标名

    向下读取游标:fetch next from 游标名 into 接收从结果集中读取到的数据的变量

    关闭游标:close 游标名

    释放游标:deallocate 游标名
    这里因为要使用游标对结果集进行遍历,那么我们必须要来介绍一个全局变量@@Fetch_Status

    @@FETCH_STATUS 返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。

    返回值 描述 0 FETCH 语句成功。 -1 FETCH 语句失败或此行不在结果集中。 -2 被提取的行不存在

    这里只是介绍游标一些简单的用法。

    下面我们再来介绍一下如何在数据库中使用延迟

    waitfor delay '00:00:01'--一秒后执行print语句

    print '我是延迟执行的'

    waitfor delay '00:00:00.010'--10毫秒后执行print语句

    print '我是延迟执行'

    waitfor time '10:00:00'--十点执行print语句

    print '我是延迟执行'

  • 相关阅读:
    Java Web三层架构设计深思
    编译C源码软件需要的工具
    Hibernate之表间关系
    CSS之颜色字体
    主流的微服务框架
    CSS布局思考
    Android创建新项目及开发
    Google工程师解析Android系统架构
    java多线程实用操作
    Spring IOC/DI/注解
  • 原文地址:https://www.cnblogs.com/rampb/p/4344628.html
Copyright © 2011-2022 走看看