博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL实现类似于自动刷新数据的功能
阅读量:6586 次
发布时间:2019-06-24

本文共 1466 字,大约阅读时间需要 4 分钟。

原文:

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

代码:

1 USE AdventureWorks2008R22 GO3  4 WHILE 1=15 BEGIN6     SELECT COUNT(*) FROM HumanResources.Employee7     WAITFOR DELAY '00:00:01'8 END

 

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

 

修改代码,如下:

1 WHILE 1=12 BEGIN3     SELECT * FROM HumanResources.Employee4     WAITFOR DELAY '00:00:01'5 END

 

成功了!为什么会这样?其实SSMS是一个很聪明的软件,因为返回的数据量很小,SSMS不会每查询一次,就即时显示出来,而是要有一定的数据量才会显示。

但是如果只需要查询行数,不是所有数据,在这里只需要稍为修改一下,增加返回(显示)的数据量就可以实现了。

 

代码如下:

1 WHILE 1=12 BEGIN3     SELECT COUNT(*) FROM HumanResources.Employee4     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语句的详细介绍,请参考:

 

转载地址:http://cyhno.baihongyu.com/

你可能感兴趣的文章
什么是企业内训
查看>>
Activity生命周期
查看>>
深度解析Istio系列之安全模块篇
查看>>
面向对象
查看>>
HDU 1058 Humble Numbers
查看>>
wps10.1中将txt转为excel
查看>>
[BZOJ3312][USACO]不找零(状压DP)
查看>>
gtp转换mbr
查看>>
poj1985 求树的直径
查看>>
js -- canvas img 封装
查看>>
适配器模式(数据库方面)支持不同的数据库连接
查看>>
CF456B Fedya and Maths 找规律
查看>>
转载:Beginning WF 4.0翻译——第三章(流程图工作流)
查看>>
芯片测试
查看>>
在源代码中插入防止盗版代码片段的方式
查看>>
ffserver联合ffmpeg建立媒体服务器
查看>>
微软URLRewriter.dll的url重写的简单使用(实现伪静态)
查看>>
leetcode -- Combination Sum II
查看>>
Navicat for MySQL 使用SSH方式链接远程数据库(二)
查看>>
poj 1274The Perfect Stall
查看>>