1. 程式人生 > >事件 + 儲存過程 (基礎)

事件 + 儲存過程 (基礎)

一、事件(可以執行定時任務)

1、create  even  if not exists  Event_Stat_Daily

2、on schedule       表示計劃任務

at     時間戳,表示完成單次任務

even 【start/end 時間戳】  表示完成重複任務,時間單位可以是year,month,day,hour,minute,second

3、on  completion  [not]  preserve       表示事件執行完任務不會被儲存

on  completion 表示事件已經結束

preserve   表示事件執行完任務後會被儲存起來

4、enable |  disable

enable  系統會執行這個事件

disable  系統不會執行這個事件

5、do + sql語句 |  儲存過程

      儲存過程: do  call  P_INS_UP_USER_LINE()$$

      SQL複合語句:do    BEGIN

CREATE TABLE test1;//建立表(需要測試一下)

DROP TABLE test2;//刪除表

CALL proc_test1();//呼叫儲存過程

 END

二、儲存過程

儲存過程就是將若干條sql語句封裝起來,編譯好放在mysql伺服器中,需要時呼叫即可;


        Declear  用來定義引數;

         set 用來設定變數的值;

        if then ... else...end if 用於判斷 ;

while...do...end while 用於迴圈 ;


建立儲存過程

Create  procedure   newTest(引數)

begin

sql語句;

end;

案例1
Create  procedure   newTest(in  name  char(100))
begin
	   DECLARE age INT DEFAULT 16;
	    DECLARE height INT DEFAULT 170;
	    DECLARE weight INT DEFAULT 16;
	    
	    set age:=age+10;
	    set weight:=weight*10;
	    
	    SELECT name ;
	    
	    if age>18  then
		select '已成年';
	    else 
		select '未成年';
	    end if;
	    
	    SELECT CONCAT('年齡',age);
	    SELECT concat('身高',height,'cm');
	    SELECT CONCAT('體重',weight,'公斤'); 
End;
案例2
Create  procedure   newTest()
begin
declare  i  int default 0;
	    declare sum1  int  default 0;
	    
	    while i<=10 do
		set sum1:=i+sum1;
		set i:=i+1;
	    end while;
	    
	    select concat('1~10的和為',sum1);
end;
案例3
Create  procedure   newTest()
begin
DECLARE ave INT DEFAULT 10;
	    SET ave:=10/5;
	    
	    CASE ave
		WHEN 1 THEN SELECT '學神';
		WHEN 2 THEN SELECT '學霸';
		WHEN 3 THEN SELECT '學奴';
		ELSE SELECT '學渣';
	   END CASE;
end;

執行儲存過程

call   儲存過程名(入參或者出參)