2016-10-22 5 views
1

オムニバス・トリガーに関する質問があります。私はこのトリガーを使用して、フィルターに一致するイベントがあれば電子メールを送信します。ここSQLトリガー(IBM Tivoli Netcool Omnibus)

がフィルタである:私はそのトリガに数行を追加したい、それが上記のトリガーと私は成功した電子メールを送っ

begin 

for each row critical in alerts.status where critical.Severity = 5 and 
critical.Grade <= 6 and critical.LastOccurrence <= (getdate() - (60*30))   
begin 
execute send_email(critical.Node, critical.Severity, '[email protected]','Netcool Email', critical.Summary, 'WINITMSVR631'); 
update alerts.status via critical.Identifier set Grade=7; 
end; 

end 

、それは次のようになり、次のようになります。

begin 

for each row critical in alerts.status where critical.Severity = 5 and 
critical.Grade <= 6 
if critical.Situation = 'blabla1'  
{begin 
execute send_email(critical.Node, critical.Severity, '[email protected]','Netcool Email', critical.Summary, 'WINITMSVR631'); 
update alerts.status via critical.Identifier set Grade=7; 
end;} 
if critical.Situation = 'blabla2'  
{begin 
execute send_email2(critical.Node, critical.Severity, '[email protected]',  'Netcool Email', critical.Summary, 'WINITMSVR631'); 
update alerts.status via critical.Identifier set Grade=7; 
end;} 

end 

しかし、私はいつもそれで何らかのエラーが発生します。正直なところ私はほとんどSQLプログラミングについて知っています。私はあなたが使用できるか分からない「{」と「}」トリガーコードに -

いずれかが

はあなたの助け

+0

あなたが得るエラー・メッセージを入力してください。 –

+0

これは私が昨夜得たエラーの種類です。 "あなたはありがとうございました" objectserverが次のエラーを報告しました: 'Error =構文文の12行目の解析エラー' CHECK STATEMENT 'トリガを作成または置き換えるmail_onクリティカルグループデフォルトトリガデバッグfalse有効trueプライオリティ1コメント\'重要なアラート。 '、または' syntax error 'の近くまたは' ' –

答えて

0

最初のものをありがとうございましたお勧めします。 の構文はif Node = 'SomeNode' then update alerts.status set Grade = 8; end if;と同じように ... ...のようになります。 end if;

私はあなたのコードを固定のだし、それはSQLの検証に合格:

begin 

for each row critical in alerts.status where critical.Severity = 5 and 
critical.Grade <= 6 
begin 
if (critical.Node = 'blabla1') then  
execute send_email(critical.Node, critical.Severity, '[email protected]','Netcool Email', critical.Summary, 'WINITMSVR631'); 
update alerts.status via critical.Identifier set Grade=7; 
end if; 
if (critical.Node = 'blabla2') then 
execute send_email(critical.Node, critical.Severity, '[email protected]','Netcool Email', critical.Summary, 'WINITMSVR631');  
update alerts.status via critical.Identifier set Grade=7; 
end if; 
end; 
end 
関連する問題