存储过程详解与实例
存儲(chǔ)過(guò)程
1、存儲(chǔ)過(guò)程的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
缺點(diǎn)
創(chuàng)建與調(diào)用過(guò)程
運(yùn)行結(jié)果如下:
調(diào)用存儲(chǔ)過(guò)程,代碼如下所示:
運(yùn)行結(jié)果如下:
存儲(chǔ)過(guò)程語(yǔ)法解析
create procedure 用來(lái)創(chuàng)建過(guò)程;
mypro 用來(lái)定義過(guò)程名稱;
(in a int,in b int,out sum int)表示過(guò)程的參數(shù),其中 in 表示輸入?yún)?shù),out 表示輸出參數(shù)。類似于 Java 定義方法時(shí)的形參和返回值;
begin 與 end 表示過(guò)程主體的開(kāi)始和結(jié)束,相當(dāng)于 Java 定義方法的一對(duì)大括號(hào);
call 用來(lái)調(diào)用過(guò)程,@s 是用來(lái)接收過(guò)程輸出參數(shù)的變量。
存儲(chǔ)過(guò)程的參數(shù)
IN 輸入?yún)?shù):表示調(diào)用者向過(guò)程傳入值(傳入值可以是字面量或變量);
OUT 輸出參數(shù):表示過(guò)程向調(diào)用者傳出值(可以返回多個(gè)值)(傳出值只能是變量);
INOUT 輸入輸出參數(shù):既表示調(diào)用者向過(guò)程傳入值,又表示過(guò)程向調(diào)用者傳出值(值只能是變量);
聲明變量
declare 用于聲明變量;
variable_name 表示變量名稱;
datatype 為 MySQL 的數(shù)據(jù)類型;
default 用于聲明默認(rèn)值;
例如:declare name varchar(20) default ‘jack’。
變量賦值
在存儲(chǔ)過(guò)程中使用變量,代碼如下所示:
use schooldb;-- 使用 schooldb 數(shù)據(jù)庫(kù) -- 創(chuàng)建過(guò)程 create procedure mypro1() begin declare name varchar(20); set name = '丘處機(jī)'; select * from studentinfo where studentname = name; end; -- 調(diào)用過(guò)程 call mypro1();運(yùn)行結(jié)果如下:
流程控制語(yǔ)句
IF 語(yǔ)句包含多個(gè)條件判斷,根據(jù)結(jié)果為 TRUE、FALSE 執(zhí)行語(yǔ)句,與編程語(yǔ)言中的 if、else if、else 語(yǔ)法類似。
定義存儲(chǔ)過(guò)程,輸入一個(gè)整數(shù),使用 if 語(yǔ)句判斷是正數(shù)還是負(fù)數(shù),代碼如下所示:
運(yùn)行結(jié)果如下:
2、case 條件語(yǔ)句
case 是另一個(gè)條件判斷的語(yǔ)句,類似于編程語(yǔ)言中的 choose、when 語(yǔ)法。MySQL 中的 case 語(yǔ)句有兩種語(yǔ)法
格式。
定義存儲(chǔ)過(guò)程,輸入一個(gè)整數(shù),使用 case 語(yǔ)句判斷是正數(shù)還是負(fù)數(shù),代碼如下所示:
定義存儲(chǔ)過(guò)程,輸入一個(gè)整數(shù),使用 case 語(yǔ)句判斷是 1 還是 2,代碼如下所示
運(yùn)行結(jié)果如下:
3、 while 循環(huán)語(yǔ)句
定義存儲(chǔ)過(guò)程,使用 while 循環(huán)輸出 1 到 10 的累加和,代碼如下所示:
4、repeat 循環(huán)語(yǔ)句
repeat 語(yǔ)句的用法和 java 中的 do…while 語(yǔ)句類似,都是先執(zhí)行循環(huán)操作,再判斷條件,區(qū)別是 repeat 表達(dá)
式值為 false 時(shí)才執(zhí)行循環(huán)操作,直到表達(dá)式值為 true 停止。
定義存儲(chǔ)過(guò)程,使用 repeat 循環(huán)輸出 1 到 10 的累加和,代碼如下所示:
5、loop 循環(huán)語(yǔ)句
循環(huán)語(yǔ)句,用來(lái)重復(fù)執(zhí)行某些語(yǔ)句。執(zhí)行過(guò)程中可使用 leave 語(yǔ)句或 iterate 跳出循環(huán),也可以嵌套 IF 等判斷
語(yǔ)句。
定義存儲(chǔ)過(guò)程,使用 loop 循環(huán)輸出 1 到 10 的累加和,代碼如下所示:
存儲(chǔ)過(guò)程的管理
總結(jié)
- 上一篇: 实验一 结构化分析(软件工程)
- 下一篇: PHP调用MYSQL存储过程实例