1. 程式人生 > >MySQL儲存過程

MySQL儲存過程

date 算數運算 else 使用 not 流程控制語句 posit 表達 gin

儲存過程

本文章原創,轉載需註明出處.

前提:大型數據庫

來源: 為了完成特定功能的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儲存過程