mysql——存儲過程簡介
什麼是存儲過程?
是存儲在數據庫服務器的一組sql語句,通過在查詢中調用某個指定的名稱來執行,類似於封裝了一組命令的函數
爲什麼要使用存儲過程?
優點:
一致性:不同的語言開發完成相同的數據庫操作寫入存儲過程就可以減少重複代碼(可重用)
高性能:在團隊開發中如果很有經驗的員工來進行存儲過程的編寫,就可以很好的提高效率
安全性:有一些特定的開發要求權限控制,使用存儲過程就能夠確保開發人員只能訪問任務所必須的信息
架構性:使用存儲過程和數據層進行操作可以進一步增強大型應用應用程序的管理性
缺點:
從性能上來說,會消耗額外的內存資源
從功能上來說,使用其他語言來構建存儲過程會更方便,如:php
從維護性上來說,更換數據庫服務器(sqlserver、mysql、orale、redis、mongodb...)會出現移植性的問題
如何創建存儲過程?
存儲過程和存儲函數合稱爲存儲例程
存儲過程:支持增刪改查等sql命令還可以設置能在程序外引用的參數
存儲函數:只支持查詢命令的執行,只接受輸入參數,並且必須要返回一個值
創建存儲過程的結構:
create procedure 存儲過程名(參數)
SQL語言
存儲存儲函數的結構:
create function 存儲函數名(參數)
return type---返回類型
SQL語句
存儲過程中的參數:
in 只用來向存儲過程傳遞信息
out 只用來從存儲過程傳回信息
inout 可以向存儲過程傳遞信息,如果值改變,則可以再從存儲外調用
聲明和設置變量
聲明變量:declare 變量名 變量類型[默認值]
設置變量:set 變量名=值[,變量名=值]
select 列名 into 變量名 from 表名 where 條件
執行存儲過程
call 存儲過程名(參數)
創建多條語句的存儲過程
begin和end語句塊
條件
if-elseif-else和case
語法結構:
if 條件 then 語句
elseif 條件 then 語句
else 語句
end if
case
when 條件 then 語句
when 條件 then 語句
...
else 語句
end case
迭代
iterate、leave、loop、repeat
leave類似於java中的break語句
語法結構:
loop類似於for循環
[begin_lable:]loop
執行語句
end loop[end_lable]
repeat類似於do-while循環
[begin_lable:]repeat
執行語句
until 條件
end repeat[end_lable]
while語句
[begin_lable:]while 條件 do
執行語句
end while[end_lable]
修改存儲過程
alter (procedure|function) 過程(函數)名 修改的內容
刪除存儲過程
drop (procedure|function)[if exists] 過程(函數)名
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.