2012-12-20 66 views
1

我有一個SQL存儲過程,只有在查找表值具有今天的日期時才需要執行。需要根據查找表值執行的SQL存儲過程

如果不是,那麼它應該在30分鐘後以相同的標準再次運行。

我該怎麼做?

查找表只有一個日期行值= '12 -14-2012'。這將通過另一個過程來改變。

+0

*** *** SQL只是*結構化查詢語言* - 許多數據庫系統中使用的語言,但沒有AA數據庫產品...很多東西都是特定於供應商的 - 所以我們真的需要知道你使用的數據庫系統**(和哪個版本)...... –

回答

0

像這樣的東西可以爲你做。請注意,此代碼不會執行,您需要用您的值替換項目。

DECLARE @Today DATE 
SET @Today = GETDATE() 

IF EXISTS (SELECT 'x' FROM MyTable WHERE CAST(ColumnName as DATE) = @Today) 
    BEGIN 
     EXEC Sproc Here 
    END 
+0

不錯。但是,我的問題是,比方說,當它匹配條件時運行一次,我如何確保SP下次不再運行。 – Peter

+0

你總是可以在你的表中放置一個標誌,表明它已經執行。然後你可以檢查那個標誌。比如BIT字段,就像HasExecuted BIT NULL,如果設置爲1,那麼你知道它已經被執行了那個特定的記錄。 – CodeLikeBeaker

+0

好的,很好,在我成功運行作業/ sp並將該位更改爲1後,明天會發生什麼?爲了新的開始,我是否已將這一點設置爲0? – Peter

0

在高層次上,您可以使用SQL Server代理程序來安排proc。要決定是否要運行,你可以把這樣的事情在proc

IF EXISTS(SELECT * FROM LOOKUP WHERE colname = convert(varchar, getdate(), 110)) 
BEGIN 
    --do stuff 
END 
+0

謝謝。我知道這會起作用。我必須安排一些事情來確保這個運行一次。所以,這是它的樣子。早上8點這個工作運行並且條件不匹配,所以sp沒有運行。現在上午9點,它找到了比賽並跑步。上午10點它不應該運行,因爲它已經在上午9點成功運行。 – Peter

+0

成功運行後,爲什麼不直接從查找表中刪除一行(或只是清除值)? –

+0

謝謝你的所有想法。 – Peter