mysql5.6.0ストアドプロシージャのタイマー例

まず、いくつかのmysqlのストアドプロシージャは注意すべきで記述します。

文字テーブルは、変数フィールドに格納され、文字コードテーブルのフィールド変数が一致するように変数宣言(DECLARE)、留意されるように設定1、。

図2は、文字がmysqlの「+」記号と組み合わせることはできません、機能をCONCAT必要があります。

図3に示すように、それぞれ異なるカーソルを使用すると、カーソル制御の最後に行わ見つからないセット= 1のハンドラを続行宣言しなければなりません。

例:

区切り文字// -ダブルスラッシュをマークする文の終わり、デフォルトはカンマ文が年末マークで
CREATE PROCEDUREを`proxy_infreeze`は()
BEGIN 
INT DEFAULT 0 DONE DECLAREを、
proxy_infreeze_amount DECIMAL(10,2)を宣言; -そのビット長の点に注意してください。また、記載または運ぶ廃棄
はcustomerId BIGINTを宣言すると、
宣言カーソルがFORをcursor_avgScore(
	SELECTは、SUM(update_amount)proxy_infreeze_amountは、b.customer_id 
	customer_bill B FROM 
	WHERE bill_type = = 1.4 AND AND create_atをSTATU> NOW DATE_ADD(()、INTERVAL - 。 。9日)AND create_at <DATE_ADD(NOW()、INTERVAL DAY -7)
	b.customer_id BY GROUP 
); 
ザが見つかりませんDONE = SET 1のハンドラを続けるDECLARE; -カーソルを制御するためにエンド。
OPENをCursor_avgScore; 
cursor_avgScore INTOのproxy_infreeze_amount、得意先FETCH。
out_loop: 
	LOOP
	UPDATE customer_accountのSET proxy_freeze_amount = proxy_freeze_amount-proxy_infreeze_amountとcustomer_id =はcustomerId。  
		、proxy_infreeze_amount INTO得意先cursor_avgScoreをFETCH。  
	= 1行う場合
				out_loop LEAVE。
	END IF; 
END LOOPのout_loop。
CLOSE cursor_avgScore; 
	更新customer_bill設定STATU = 2 bill_type = 4、STATU = 1 AND create_at> DATE_ADD(NOW()、INTERVAL -9 DAY)AND create_at <DATE_ADD(NOW()、INTERVAL -7 DAY)
END // 
区切り文字。

  

第二に、タイマー

-チェックタイミングポリシーがオンになっている
変数「%event_sche%」のようなショー; 
-開口部は戦略にタイミング
、株式会社参加無料SETをevent_scheduler = 1; 

-スケジュールされたタスクのイベント(イベント)を作成し
、イベントbatchDel_overdue_order_eventを作成
を開始する1スケジュール毎日ソーホーONを2016-10-夜11時50分〇 〇秒01」
終了時に無効化を維持
batchDel_overdue_order()の呼び出しを行う; 

-タイミングタスクイベント(イベント)を表示するために、あなたはこのマシンにすべてのイベントを表示することができます
SELECT EVENT_NAME、EVENT_DEFINITIONを、INTERVAL_VALUE、INTERVAL_FIELD、information_schema.EVENTSステータスFROM; 

ALTER完了時にイベントbatchDel_overdue_order_event有効保存; -開くタイミングタスク
無効を保存完了時にイベントSECOND_EVENTを変更する; - ジョブの閉弁時期

  

 

おすすめ

転載: www.cnblogs.com/mobaids/p/10853020.html