2017-03-21 30 views
0

我們運行SQL Server 2012.如果滿足條件,我想生成警報郵件。這將在SQL Server代理中設置並每隔一小時運行一次。根據條件發送提醒

基本上會運行以下查詢:

SELECT 
    IBTRANSACTIONID, SUBCONSTATUS 
FROM 
    PSAPMSGSUBCON 
WHERE 
    SUBCONSTATUS = 3 
    AND STATUSSTRING = 'WRKNG' 

IF --(need some input here) 
    EXEC msdb.dbo.sp_send_dbmail --(then would call this to issue email) 

欣賞回覆

+2

目前還不清楚你的問題是什麼。你的代理工作難以執行什麼樣的條件? – TZHX

+0

不確定如何構造'IF'語句,因爲where子句具有限定符。 – user1133448

+1

'如果存在',那麼你的選擇? – TZHX

回答

1
You may try this one. 

DECLARE 
    @IBTRANSACTIONID VARCHAR(100) = NULL, 
    @SUBCONSTATUS VARCHAR(100) =NULL 
SELECT 
    @IBTRANSACTIONID = IBTRANSACTIONID, 
    @SUBCONSTATUS = SUBCONSTATUS 
FROM 
    PSAPMSGSUBCON 
WHERE 
    SUBCONSTATUS = 3 
    AND STATUSSTRING = 'WRKNG' 

IF (@IBTRANSACTIONID IS NOT NULL AND @IBTRANSACTIONID <>'') AND (@SUBCONSTATUS IS NOT NULL OR @IBTRANSACTIONID <>'') 
    BEGIN 
     EXEC msdb.dbo.sp_send_dbmail --(then would call this to issue email) 
    END 
+1

好的答案,除了我認爲'不爲空或'應該是'不爲空和'來處理空字符串。順便說一句,我通常使用'ISNULL(@IBTRANSACTIONID,'')<>'')'來檢查空的變量。 – BdR

+0

順便說一句,這是非常簡單的問題,所以我試圖用簡化的邏輯來回答,以便提問者可以理解SQL如何工作。 感謝您的評論,這將有助於其他社區用戶。 –

+0

感謝您的幫助!我會試一試,你的例子讓我更好地理解所涉及的邏輯。 – user1133448