我有一个SQL存储过程,只有在查找表值具有今天的日期时才需要执行。需要根据查找表值执行的SQL存储过程
如果不是,那么它应该在30分钟后以相同的标准再次运行。
我该怎么做?
查找表只有一个日期行值= '12 -14-2012'。这将通过另一个过程来改变。
我有一个SQL存储过程,只有在查找表值具有今天的日期时才需要执行。需要根据查找表值执行的SQL存储过程
如果不是,那么它应该在30分钟后以相同的标准再次运行。
我该怎么做?
查找表只有一个日期行值= '12 -14-2012'。这将通过另一个过程来改变。
像这样的东西可以为你做。请注意,此代码不会执行,您需要用您的值替换项目。
DECLARE @Today DATE
SET @Today = GETDATE()
IF EXISTS (SELECT 'x' FROM MyTable WHERE CAST(ColumnName as DATE) = @Today)
BEGIN
EXEC Sproc Here
END
不错。但是,我的问题是,比方说,当它匹配条件时运行一次,我如何确保SP下次不再运行。 – Peter
你总是可以在你的表中放置一个标志,表明它已经执行。然后你可以检查那个标志。比如BIT字段,就像HasExecuted BIT NULL,如果设置为1,那么你知道它已经被执行了那个特定的记录。 – CodeLikeBeaker
好的,很好,在我成功运行作业/ sp并将该位更改为1后,明天会发生什么?为了新的开始,我是否已将这一点设置为0? – Peter
在高层次上,您可以使用SQL Server代理程序来安排proc。要决定是否要运行,你可以把这样的事情在proc
IF EXISTS(SELECT * FROM LOOKUP WHERE colname = convert(varchar, getdate(), 110))
BEGIN
--do stuff
END
*** *** SQL只是*结构化查询语言* - 许多数据库系统中使用的语言,但没有AA数据库产品...很多东西都是特定于供应商的 - 所以我们真的需要知道你使用的数据库系统**(和哪个版本)...... –