一 基本語法
– 聲明SQL語句執行結束標志符號為 $(默認是分號,不修改這里,會影響存儲過程內的整體執行)
$
– 創建存儲過程
()
begin
– 這里實現存儲過程的業務
end$
– ; 恢復SQL默認結束符號為分號;
;
– 調用存儲過程
call ();
二 存儲實戰應用
2.1 需求背景
2.1.1 存在科目表,存儲了科目名稱和它的id
表名:
字段 :
課程主鍵:
課程名稱:
2.1.2 存在成績表mysql存儲過程 更新數據,存儲所有學生的所有課程的成績;
表名: score
字段:
學生id,學生名字(與本次需求無關)
科目主鍵:
科目份數:
2.2 需求
需要往成績表score內增加冗余字段 科目名稱,方便單表查詢就可拿到對應的數據;
2.3 分析確定方案
新增的字段初始化值,使用SQL腳本實現(存儲過程);
查詢課程表拿到所有課程id和名稱
c.,c. FROM c;
根據課程id到程表內更新所有數據的課程名稱字段;
這里涉及到的技術難點有兩項:
存儲過程的創建與調用;
存儲過程內遍歷結果集;
2.4 方案實現
ALTER TABLE score ADD (32);
-- 刪除已經存在名字為 存儲過程;
DROP IF ;
-- 聲明SQL語句執行結束標志符號為 $$(默認是分號,不修改這里mysql存儲過程 更新數據,會影響存儲過程內的整體執行)
$$
-- 創建存儲過程
()
BEGIN
-- 聲明局部變量 id 和 age; 用于接收結果集的遍歷結果值;更新到sc表;
INT;
(32);