MySQL儲存過程
儲存過程
本文章原創,轉載需註明出處.
前提: 在大型數據庫中
來源: 為了完成特定功能的SQL語句集
定義: 儲存在數據庫中, 用戶通過指定儲存過程的名字並給出參數(帶有參數的)來執行它
聲明: 儲存過程是數據庫中一個重要的對象,類似於PHP,js 中的函數
創建儲存過程
create procedure 名稱(in|out|inout 名稱 類型,...)
begin
過程體;
end
說明: 過程體可以使用所學的所有SQL
可以運用變量,運算,流程控制語句,函數
儲存過程沒有返回值
in 傳入參數
out 傳出參數
inout 傳入傳出參數
儲存過程中的變量
數據類型
int smallint tinyint char varchar text enum() set() 等
聲明變量
declare 變量名 類型(長度)
default 默認值
變量賦值
set 變量名 = 值
變量使用
變量名
儲存過程中的運算
算數運算
+ - * / %
比較運算
> < >= <= = != <>
邏輯運算
and or not
賦值
set 變量=值
儲存過程中的條件語句
if 條件 then
elseif 條件 then
過程;
elseif 條件 then
過程;
elseif 條件 then
過程;
else
過程;
end if;
儲存過程中選擇語句
case 變量名或字段或表達式
when 0 then
語句;
when 1 then
語句;
else
語句;
end case;
儲存過程中循環語句
while 循環條件 do
變換步長;
end while;
repeat
變換步長
until 終止條件
end repeat;
儲存過程中的函數
字符串函數:
CONCAT (string2 [,... ]) //連接字串
REPLACE (str ,search_str ,replace_str ) //在str中用replace_str替換search_str
SUBSTRING (str , position [,length ]) //從str的position開始,取length個字符
數學函數:
CEILING (number2 ) //向上取整
FLOOR (number2 ) //向下取整
RAND([seed]) //隨機數
ROUND (number [,decimals ]) //四舍五入,decimals為小數位數]
時間日期函數:
CURRENT_DATE ( ) //當前日期
CURRENT_TIME ( ) //當前時間
NOW ( ) //當前時間
CURRENT_TIMESTAMP ( ) //當前時間
儲存過程的管理
查看所有存儲過程
select name from mysql.proc where db = ‘system‘ and type= ‘PROCEDURE‘
查看某個存儲過程
show create procedure 存儲過程名稱;
刪除存儲過程
drop procedure 存儲過程名稱;
MySQL儲存過程