存储例程(stored routines)可以理解为一组特定的SQL语句集合,存储例程包括存储过程(stored procedures)和存储函数(store functions)。使用存储例程具有以下优点:
- 避免相同操作因不同平台导致的重复开发,后续维护更加方便
- 避免sql注入的带来的安全问题
存储过程示例:
DELIMITER //DROP PROCEDURE IF EXISTS details.read_recordById //CREATE PROCEDURE details.read_recordById (IN emp_id INT)BEGINSELECT * FROM STUDENT WHERE ID = emp_id;END//DELIMITER ;
DELIMITER 声明结束符,一般使用 DELIMITER // 或者 DELIMITER 声明 // 或 为结束符;DROP PROCEDURE IF EXISTS details.read_recordById // 删除details数据库中名为read_recordById的存储过程,如果有则删除。CREATE PROCEDURE details.read_recordById (IN emp_id INT) 在details数据库中创建名为read_recordById的存储过程,IN表示输入参数,调用者向过程传入值。除此以外,OUT 表示输出参数,过程向调用者传出值;INOUT表示输入输出参数,调用者既可以向过程传入值,过程也可以向调用者传出值。emp_id表示传入参数的变量名,INT表示传入参数的类型。
存储过程开始和结束分别用 BEGIN 和 END ,最后输入 // 表示存储过程结束,最后再次声明结束符为; DELIMITER ;
调用存储过程:call read_recordById(2)
删除存储过程:drop procedure read_recordById
