Mysql存儲過程和函數

Mysql存儲過程和函數

  1. 基本概念:

  建立存儲過程和函數是指將常常使用的一組SQL語句的組合在一塊兒,並將這些SQL語句看成一個總體存儲在MySQL服務器中。例如,銀行常常須要計算用戶的利息。不一樣類別的用戶的利率是不同的。這就能夠將計算利率的SQL代碼寫成一個存儲過程或者存儲函數。只要調用這個存儲過程或者存儲函數,就能夠將不一樣類別用戶的利息計算出來。sql

  1. 建立存儲過程

delimiter $$;服務器

create procedure 名稱(參數列表)函數

beginit

SQL語句塊io

endfunction

$$;test

delimiter;變量

  1. 存儲過程當中變量的定義、參數類型和傳參

變量定義:–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. 存儲過程當中語句

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;

  1. 建立函數

函數和存儲過程相似,區別是函數有返回值,存儲過程沒有返回值。

create function 函數名( 變量1,變量2.....)

returns 數據類型

begin

......執行的程序代碼

return 數據;

     end;

  1. 查看存儲過程和函數

show procedure status;

show function status;

show create procedure;

show create

  1. 刪除存儲過程或函數

drop { procedure| function } sp_name;

相關文章
相關標籤/搜索