一、模式
二、存儲過程與存儲函數
語法如下:
CREATE PROCEDURE sp_name ([proc_parameter[,…]])
[characteristic …] routine_body
CREATE FUNCTION sp_name ([func_parameter[,…]])
RETURNS type
[characteristic …] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic:
LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT string
routine_body:
Valid SQL procedure statement or statements
例如:存儲過程
mysql> use test;
mysql> delimiter // ###定義"//"為語句開始執行符號
mysql> create procedure simpleproc(out param1 int)
begin
select count(*) into param1 from t;
end
//
mysql>delimiter ; ####重新定義;為語句開始執行的符號
mysql> call simpleproc(@a);
mysql> select @a; ####a為一個變量
+——+
| @a |
+——+
| 1 |
+——+
區別:過程隻處理一件事,並無返回值,但可以通過出口參數param1來返回處理後的值;而存儲函數可以返回值
例如:存儲函數
1.字符串拼接函數hello()
mysql> use test;
mysql> delimiter //
mysql> create function hello (t char(20)) returns char(50)
return concat(‘hello, ’ ,t, ‘!’);
//
mysql> delimiter ;
mysql> select hello(‘world’);