sql server如何每10秒执行一条SQL语句
我要执行一条插入语句INSERTRuntime.dbo.history(TagName,QualityDetail,Value,DateTime)SELECTrtrim(...
我要执行一条插入语句
INSERT Runtime.dbo.history(TagName, QualityDetail, Value, DateTime)
SELECT rtrim(t1.name), 192,t1.curval,DATEADD(ss, t1.timestamp_high, '1970-01-01 08:00:00.000') AS Expr1
FROM scadasqltest.gzweb.dbo.analog t1 where t1.name ='ZQJ_YX710_I'
我想每10秒执行一次如何写一条语句.
如何定义,
写一个死的循环也可以.
只是想知道怎么每10秒执行一次
我是这样做的
1:新建一个存储过程
set ansi_nulls on
set ansi_warnings on
create proc p_ZQJ_YX710_I_test
as
declare @d datetime
set @d=dateadd(minute,1,getdate())
while @d<getdate()
begin
INSERT Runtime.dbo.history(TagName, QualityDetail, Value, DateTime)
SELECT rtrim(t1.name), 192,t1.curval,DATEADD(ss, t1.timestamp_high, '1970-01-01 08:00:00.000') AS Expr1
FROM scadasqltest.gzweb.dbo.analog t1 where t1.name ='ZQJ_YX710_I'
waitfor delay '00:00:10'--定义等待10秒
end
go
2:新建一个作业,定义每一分钟执行一次 exec p_ZQJ_YX710_I_test 语句
但是好像没有成功,是不是我的语句有问题呀
我不写 waitfor delay '00:00:10'--定义等待10秒 这一句是可以每一分钟就执行的.为什么加上了没有按每10秒执行?
急急急!!!!!!!!!!!!!!
谢谢 展开
INSERT Runtime.dbo.history(TagName, QualityDetail, Value, DateTime)
SELECT rtrim(t1.name), 192,t1.curval,DATEADD(ss, t1.timestamp_high, '1970-01-01 08:00:00.000') AS Expr1
FROM scadasqltest.gzweb.dbo.analog t1 where t1.name ='ZQJ_YX710_I'
我想每10秒执行一次如何写一条语句.
如何定义,
写一个死的循环也可以.
只是想知道怎么每10秒执行一次
我是这样做的
1:新建一个存储过程
set ansi_nulls on
set ansi_warnings on
create proc p_ZQJ_YX710_I_test
as
declare @d datetime
set @d=dateadd(minute,1,getdate())
while @d<getdate()
begin
INSERT Runtime.dbo.history(TagName, QualityDetail, Value, DateTime)
SELECT rtrim(t1.name), 192,t1.curval,DATEADD(ss, t1.timestamp_high, '1970-01-01 08:00:00.000') AS Expr1
FROM scadasqltest.gzweb.dbo.analog t1 where t1.name ='ZQJ_YX710_I'
waitfor delay '00:00:10'--定义等待10秒
end
go
2:新建一个作业,定义每一分钟执行一次 exec p_ZQJ_YX710_I_test 语句
但是好像没有成功,是不是我的语句有问题呀
我不写 waitfor delay '00:00:10'--定义等待10秒 这一句是可以每一分钟就执行的.为什么加上了没有按每10秒执行?
急急急!!!!!!!!!!!!!!
谢谢 展开
3个回答
展开全部
可以用
waitfor delay '000:00:10'
把这个放在要执行的语句之前,这样过10秒钟才会执行语句,结合循环操作就可以每10秒执行一次了。
这个最好和语句同时放在存储过程中,执行完语句后,再调用存储过程就可以实现循环了。
用作业调度一次就可以了,把exec p_ZQJ_YX710_I_test加在存储过程最后,另外把while循环去掉,只要自己调用自己就可以了。另外最好设置一个配置表,在其中放置一个值用来确定是否要继续循环下去,如果不想让它循环下去,只要将那个配置值改一下。否则在重新启动SQL SERVER服务之前,这个存储过程会无限循环下去,一般是不好终止的。
create proc p_ZQJ_YX710_I_test
as
declare @d datetime
INSERT Runtime.dbo.history(TagName, QualityDetail, Value, DateTime)
SELECT rtrim(t1.name), 192,t1.curval,DATEADD(ss, t1.timestamp_high, '1970-01-01 08:00:00.000') AS Expr1
FROM scadasqltest.gzweb.dbo.analog t1 where t1.name ='ZQJ_YX710_I'
waitfor delay '00:00:10'--定义等待10秒
exec p_ZQJ_YX710_I_test
waitfor delay '000:00:10'
把这个放在要执行的语句之前,这样过10秒钟才会执行语句,结合循环操作就可以每10秒执行一次了。
这个最好和语句同时放在存储过程中,执行完语句后,再调用存储过程就可以实现循环了。
用作业调度一次就可以了,把exec p_ZQJ_YX710_I_test加在存储过程最后,另外把while循环去掉,只要自己调用自己就可以了。另外最好设置一个配置表,在其中放置一个值用来确定是否要继续循环下去,如果不想让它循环下去,只要将那个配置值改一下。否则在重新启动SQL SERVER服务之前,这个存储过程会无限循环下去,一般是不好终止的。
create proc p_ZQJ_YX710_I_test
as
declare @d datetime
INSERT Runtime.dbo.history(TagName, QualityDetail, Value, DateTime)
SELECT rtrim(t1.name), 192,t1.curval,DATEADD(ss, t1.timestamp_high, '1970-01-01 08:00:00.000') AS Expr1
FROM scadasqltest.gzweb.dbo.analog t1 where t1.name ='ZQJ_YX710_I'
waitfor delay '00:00:10'--定义等待10秒
exec p_ZQJ_YX710_I_test
展开全部
可以通过”waitfor delay '00:00:00:10' “方法来进行延迟设置;
解释:上面语句中的日、时、分、秒,也就是说执行延迟10s,可以每次执行完一个sql后后面加上此条语句来进行延迟操作,之后再继续执行其他的sql;
如:select * from tablename waitfor delay '00:00:00:10;
解释:上面语句中的日、时、分、秒,也就是说执行延迟10s,可以每次执行完一个sql后后面加上此条语句来进行延迟操作,之后再继续执行其他的sql;
如:select * from tablename waitfor delay '00:00:00:10;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
语句好像没有这样的,可以用任务实现。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |