SQL实现类似于自动刷新数据的功能

原文:SQL实现类似于自动刷新数据的功能

有时需要在SQL中,定时刷新某张表,比如说是要定时查询某张表的行数,通常做法就是手动的按F5去执行来刷新数据。但是如果这个定时查询历时较长,10分钟,或半小时,手动的话肯定是要崩溃了。貌似SQL没有像应用程序自动刷新的功能,可能是我还不知道有这样的功能,于是就写了一个类似自动刷新数据的脚本,需要手动中止程序的运行,当然也可能写个条件,自动结束语句的执行。

代码:

1 USE AdventureWorks2008R2
2 GO
3
4 WHILE 1=1
5 BEGIN
6     SELECT COUNT(*) FROM HumanResources.Employee
7     WAITFOR DELAY '00:00:01'
8 END

 

执行后发现等了很久,SSMS都没有返回数据,就一直执行下去。如果耐心等待下去,大约是1-2分钟,数据突然“嘣”的一下子就出来了,根本不是自己想要实现的效果(写到这里,想到了成龙大哥卖X王洗发水的广告深深的影响了我-_-!!)。是不是这种写法是不行的?现在就来测试下。

 

修改代码,如下:

1 WHILE 1=1
2 BEGIN
3     SELECT * FROM HumanResources.Employee
4     WAITFOR DELAY '00:00:01'
5 END

 

成功了!为什么会这样?其实SSMS是一个很聪明的软件,因为返回的数据量很小,SSMS不会每查询一次,就即时显示出来,而是要有一定的数据量才会显示。
但是如果只需要查询行数,不是所有数据,在这里只需要稍为修改一下,增加返回(显示)的数据量就可以实现了。

 

代码如下:

1 WHILE 1=1
2 BEGIN
3     SELECT COUNT(*) FROM HumanResources.Employee
4     PRINT REPLICATE(1,4000)
5     WAITFOR DELAY '00:00:01'
6 END

 

那么问题来了,究竟是多大数据,每次查询才会即时显示呢?把PRINT REPLICATE(1,4000)4000修改为1000,执行语句,发现是每一次显示两行结果;修改为2000,有时一行,有时两行;修改为3000,一行的次稍多,修改为4000,可以了。得出结论,返回大于4000个字符时,SSMS会即时显示。

 

那么,新的问题又来了!每次SELECT查询都是隔开一行,有没有办法只显示最新的那个结果,或是只在一个表格中显示呢?

 

再继续修改代码,如下:

 1 SET NOCOUNT ON;
 2
 3 WHILE 1=1
 4 BEGIN
 5     SELECT 'The count at ' + CONVERT(VARCHAR(20),GETDATE(),20) + ' is ==> ' + RTRIM(COUNT(*)) FROM HumanResources.Employee
 6     PRINT REPLICATE(' ',4000)
 7     WAITFOR DELAY '00:00:01'
 8 END
 9
10 SET NOCOUNT OFF;

 

执行前,记得按Ctrl + T,或者点击SSMS的菜单命令,把执行结果以Text的格式显示。

 

实际效果如下:

 

这样就可以舒舒服服的看着SSMS自动地不停刷新数据,如果表的数据有变化,也会即时看到,也许能满足某些“特殊”的需求(貌似没什么实际作用-_-!!)。

 

好吧,关于WAITFOR语句的详细介绍,请参考:https://msdn.microsoft.com/en-us/library/ms187331%28v=sql.105%29.aspx

 

时间: 2024-10-27 02:13:03

SQL实现类似于自动刷新数据的功能的相关文章

Swift开发之下拉刷新数据的功能实现(使用UIRefreshControl)

想要下拉刷新表格数据,上拉加载新数据,网上有许多第三方的实现类. 而如果仅仅需要实现下拉刷新数据的话,那么使用 UIRefreshControl 就足够了,简单有好用.   1,UIRefreshControl 的使用步骤: (1)创建 UIRefreshControl,并设置文字,颜色等信息. (2)将 UIRefreshControl 添加到tableview视图中. (3)给 UIRefreshControl 添加方法,当值改变的时候调用,用于数据请求刷新. (4)请求数据确认完成之后,调

图片-实现由无网络连上网络自动刷新数据

问题描述 实现由无网络连上网络自动刷新数据 安卓实现实现由无网络连上网络自动刷新数据 比如当前网络不稳定图片未加载出 网络恢复正常的时候自动 加载出图片 解决方案 http://www.cnblogs.com/renqingping/archive/2012/10/18/Net.html 定时轮询 解决方案二: 网络的变化都是发广播的,监听这个广播,再判断处理不得了... 解决方案三: 根据网络变化的广播,注册一个receiver,判断一个标志位 解决方案四: iOS平台利用 NSURLProt

提醒功能做不好,无法自动刷新数据,太奇怪了!!

问题描述 问题:做消息提醒功能时,循环调用XMLHttpReq.open("GET",url,true),判断数据库是否有到期的提醒.但发现调用XMLHttpReq.open("GET",url,true)后,每次返回的字串符都一样.如果数据库有更新,有新的提醒,也检测不到.也就是每次调用XMLHttpReq.open,都只返回第一次调用的返回值.请高手指点迷津,不胜感激!以下是代码:varXMLHttpReq;functioncreateXMLHttpReques

WPS2009打开数据透视表时实现自动刷新

当WPS2009文档中某一数据透视表的源数据发生变动后,需要对数据透视表进行手动刷新操作,以将变动后的数据更新到数据透视表中.其实我们可以通过设置,在打开WPS2009文档数据透视表时实现自动刷新数据.方法如下. 选中WPS数据透视表中任一单元格,激活"数据透视表"工具栏,然后单击"数据透视表(P)" 按钮旁边的倒三角形图标,在弹出的列表中选择"表格选项"命令,在"数据透视表选项"对话框中勾选"打开时刷新"

Swift表格tableView上拉加载新数据的功能实现例子

对于表格(tableView)来说,下拉刷新数据.上拉加载数据应该是两个最常用的数据更新操作了.对于前者,我原来写过一篇相关的文章:Swift - 下拉刷新数据的功能实现(使用UIRefreshControl).本次我来讲讲后者的实现. 说是上拉加载数据,其实就是当我们将表格内容滚动到最后一行时,系统就会自动获取新的内容并添加到列表尾部(具体效果可以参考百度贴吧的App).下面我们通过一个小样例来演示上拉加载的实现. 1,样例效果图 (1)当初次进入程序时,先加载前20条数据. (2)当 tab

php懒人函数 自动添加数据

复制代码 代码如下: /* *@自动添加数据函数 *@$table 表名 *@$arr 字段库 array("title",array("content",int)) *@ array(字段,类型) *@ 类型说明 html--允许html unhtml-不允许html int --int类型 float -- float 类型 */ //自动插入数据函数 function autoInsert($table,$arr=array(),$method='post')

php懒人函数 自动添加数据_php技巧

复制代码 代码如下: /* *@自动添加数据函数 *@$table 表名 *@$arr 字段库 array("title",array("content",int)) *@ array(字段,类型) *@ 类型说明 html--允许html unhtml-不允许html int --int类型 float -- float 类型 */ //自动插入数据函数 function autoInsert($table,$arr=array(),$method='post')

jspm实现自动刷新页面的程序

我在 JSPM 环境下开发时,页面修改由 Browsersync 监控,然后自动刷新,命令行里这样执行: browser-sync start --server --files '*.html, style/**, script/**' BrowserSync 的好处是,如果多个浏览器中测试同一个页面地址,则页面修改会同步到多个浏览器中. 后来想,gulp.js.webpack.grunt.js 等一类工具都内置了自动刷新页面的功能,jspm 或许也会有.找了下资料,没有,但有个 jspm-se

Json数据异步绑定到界面的Table并且自动刷新原理及代码

做Winform习惯了,大家都习惯设置datasource这样的写法. 如果想实现页面定时刷新的话,用.net给封装好的updatepanel和timer两个控件实现起来其实挺容易的.这样做加入了很多你不能控制的元素,举个例子说就是:用updatepanel后,你设置的样式很有可能就变了,然后你还需要去调这些.所以还是用一些自己控制性高的代码比较合适. 今天就先从这个updatepanel加timer实现页面自动刷新这个例子来下手吧. 首先来看一下我的一般处理程序,在这个里面,我自己实现的是从数