1 建立儲存過程和函式
建立儲存過程和函式的create語法規範如下:
create
[definer = ] ##很多時候不需要特別宣告
procedure sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
create
[definer = ]
function sp_name ([func_parameter[,...]]) ##輸入引數
returns type ## 宣告返回值
[characteristic ...] routine_body
proc_parameter:
[ in | out | inout ] param_name type ##宣告輸入輸出引數
func_parameter:
param_name type ##輸入引數,由於其輸出參與已經在return中宣告,不需要再指定
type:
any valid mysql data
type
characteristic:
comment
'string'
| language sql
| [not] deterministic ##預設為not dterministic
| | sql security
routine_body:
valid sql routine statement
如果沒有宣告[not] deterministic選項,則mysql預設的選項為not deterministic,意味著mysql針對deterministic的優化器不會開啟。因此這個選項需要特別注意的寫上。
但是僅有create語句是不夠的,一般建立過程和函式有一下3個步驟:
a 修改delimiter
b create語句+begin...end語句 作為儲存過程和函式的主體部分
c 恢復原有的delimiter
如 官方文件中建立儲存過程的例項:
mysql> delimiter //
mysql> create
procedure ******proc (out param1 int)
-> begin
-> select
count(*) into param1 from t;
-> end//
query ok, 0
rows affected (0.00 sec)
mysql> delimiter ;
建立函式的示例:
mysql> delimiter //
mysql> create
function hello (s char(20))
mysql> returns char(50) deterministic
-> return
concat('hello, ',s,'!');
query ok, 0
rows affected (0.00 sec)
mysql> delimiter ;
2 呼叫方法
call sp_name([parameter[,...]])
call sp_name[()]
3 檢視狀態
show status [like
'pattern']
或者:show create sp_name
或者從information_schema.routines表中檢視
select * from information_schema.routines where routine_name=' sp_name ' ;
4 修改
alter sp_name [characteristic ...]
5 刪除
drop [if
exists] sp_name
6 過程和函式的好處
可以參見博文利用mysql的儲存過程比單獨執行mysql的優勢在**?好處有什麼?
簡單說起來主要是:可復用,高效率,省流量,更安全。
MySQL中的儲存過程和函式
這幾天學了儲存過程和函式,總結的不是太完整,先記下來。儲存過程 含義 一組經過預先編譯的sql語句的集合 好處 1 提高了sql語句的重用性,減少了開發程式設計師的壓力 2 提高了效率 3 減少了傳輸次數 分類 1 無返回無參 2 僅僅帶in型別,無返回有參 3 僅僅帶out型別,有返回無參 4 既...
mysql 過程和函式 MySQL 儲存過程和函式
變數 系統變數 變數由系統提供,不是使用者自定義的,屬於伺服器層面 全域性變數 會話變數 如果是全域性級別,則需要加global,如果是會話級別,則需要加session,如果不寫,則預設是會話 檢視全域性變數 show global variables show global variablesli...
mysql過程函式 mysql 儲存過程和函式
乙個儲存程式是可以被儲存在伺服器中的一套sql語句。可以通過客戶端用create procedure和create function 建立乙個儲存過程或函式。在客戶端通過call語句 呼叫所建立的存數過程或函式。語法 建立儲存子程式 create procedure sp name proc par...