MySQL之儲存程式是什麼B玩意
儲存程式
1.什麼是儲存程式
- 儲存程式指的一組儲存和執行在資料庫伺服器端的程式。儲存程式總是在伺服器的程序或者執行緒的記憶體中執行的。
- 優點:
- 簡化sql開發
- 效率提高
- 缺點:
- 資料遷移麻煩
- 佔用伺服器資源
- 對資料庫影響較大
2.[儲存]過程
- 有輸入和輸出引數,儲存一組sql操作,獨立呼叫。
#宣告 delimiter //; create procedure pro_emp() begin select * from emp; end; //
#呼叫 call pro_emp();
delimiter //; create procedure pro_emp_no(eno int) begin select ename from emp where empno=eno; end;
call pro_emp_no(7369);
引數三種模式: IN:輸入模式(預設) OUT:輸出模式 INOUT:輸入輸出模式 elimiter //; create procedure sel_emp(eno int,out en varchar(20)) begin select ename into en from emp where empno = eno; end;
#呼叫 call sel_emp(7788,@name); select @name;
#根據員工姓名查詢職位 delimiter //; create procedure sel_emp2(inout en_job varchar(20)) begin select job into en_job from emp where ename = en_job; end; #呼叫 set @name_job='scott'; call sel_emp2(@name_job); select @name_job;
分支: if delimiter //; create procedure score(score int,out level varchar(20)) begin if score>=80 then set level='A'; elseif score>=60 then set level ='B'; else set level = 'C'; end if; end; 迴圈: #while 1+2+...+10 delimiter //; create procedure calc1() begin #宣告變數 declare i int; declare sum int; #賦值 set i=1; set sum=0; #迴圈 while i<=10 do set sum=sum+i; set i=i+1; end while; select sum; end;
call calc1();
#loop delimiter //; create procedure calc2() begin #宣告變數 declare i int; declare sum int; #賦值 set i=1; set sum=0; #迴圈 lip:loop set sum = sum + i; set i = i+1; if i>10 then leave lip; end if; end loop; select sum; end;
call calc2();
#repeat delimiter //; create procedure calc3() begin #宣告變數 declare i int; declare sum int; #賦值 set i=1; set sum=0; #迴圈 repeat set sum = sum + i; set i = i+1; until i>10 end repeat; select sum; end; call calc3(); |
3.[儲存]函式
- 有返回值。
delimiter //; create function sel_name(eno int) returns varchar(20) #返回值型別 DETERMINISTIC #確定的 begin declare v_name varchar(20); select ename into v_name from emp where empno = eno; return v_name; end;
select sel_name(7788); |
4.觸發器
- 由事件驅動(不能手動呼叫)