我有一個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數據庫產品...很多東西都是特定於供應商的 - 所以我們真的需要知道你使用的數據庫系統**(和哪個版本)...... –