存储过程详解与实例
存儲(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存储过程实例