存储过程
为什么要存储过程
1.减少网络流量
2.提高执行速度
3.减少数据库连接次数
4.安全性高
5.高复用
缺点
可移植性差
#创建存储过程
DELIMITER//
CREATE PROCEDURE
proc_patient_patientCount2(OUT patientNum INT)
BEGIN
SELECT COUNT(*) INTO patientNum FROM patient;
END //
DELIMITER;
#调用存储过程
CALL proc_patient_patientCount2(@patientCount) #接受输出的变量
SELECT @patientCount; #查看变量
语法结构
CREATE PROCEDURE 过程名 ([过程参数[,...]])
[特征]
BEGIN
存储过程
END
存储过程权限
DEFINER
1.默认 DEFINER = CURRENT_USER
2.检查’user_name’@'host_name’的权限
INVOKER
执行存储过程时,会检查调用者的权限
查看数据库中已创建的存储过程
SHOW PROCEDURE STATUS;
SHOW PROCEDURE STATUS LIKE ‘%patient%’;
查看数据库中已创建的存储过程代码
SHOW CREATE PROCEDURE proc_pp1
修改存储过程
ALTER PROCEDURE 存储过程名 [特性…]
删除存储过程
DROP PROCEDURE 存储过程名
删除已存在的存储过程proc_calc_patient_avg_cost
DROP PROCEDURE IF EXISTS proc_calc_patient_avg_cost;
IFELSE语法
IF 条件 THEN 语句列表
[ELSEIF 条件 THEN 语句列表]
[ELSE 语句列表]
END IF;