建立存儲過程和函數是指將常常使用的一組SQL語句的組合在一塊兒,並將這些SQL語句看成一個總體存儲在MySQL服務器中。例如,銀行常常須要計算用戶的利息。不一樣類別的用戶的利率是不同的。這就能夠將計算利率的SQL代碼寫成一個存儲過程或者存儲函數。只要調用這個存儲過程或者存儲函數,就能夠將不一樣類別用戶的利息計算出來。sql
delimiter $$;服務器
create procedure 名稱(參數列表)函數
beginit
SQL語句塊io
endfunction
$$;test
delimiter;變量
變量定義:–declare 變量名 數據類型 default 默認值select
參數類型:sql語句
–in參數:表示該參數的值必須在調用存儲過程以前指定,在存儲過程當中修改的值不能被返回,也就是調用的時候就得指定,默認傳入的就是in參數
舉例:
–out參數:該值可在存儲過程內部改變,並能夠返回.每每是用於獲取存儲過程裏的參數值。
–inout參數:該值能夠在調用時指定,並可修改和返回。
傳參:–create procedure test_p( in 參數名 參數類型,out 參數名 參數類型)
舉例:
delimiter $$;
create procedure test_p8(id int,out phone int,inout s_name varchar(20))
begin
declare sex varchar(10) default '男';
set id = id+1;
set phone = 186125312;
select s_name;
set s_name = 'BESTTEST';
insert into students values (id,s_name,phone,sex);
end
$$;
delimiter;
set @phone=99888;
set @s_name='besttest'
call test_p8(70,@phone,@s_name);
select * from students;
select @s_name;
1) if條件判斷:
if 條件 then
語句
elseif 條件 then
語句
else
語句
end if;
2) case條件判斷:
case value
when 條件 then
sql語句
when 條件2 then
sql語句
else#若是上面條件都不知足的話執行
sql語句
end case
3) while循環:
while 條件 do
sql語句
end while;
4) repeat循環:
repeat
sql語句
until 條件
end repeat;
函數和存儲過程相似,區別是函數有返回值,存儲過程沒有返回值。
create function 函數名( 變量1,變量2.....)
returns 數據類型
begin
......執行的程序代碼
return 數據;
end;
show procedure status;
show function status;
show create procedure;
show create
drop { procedure| function } sp_name;