是SQL语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理
参数:输入类型 输出类型 输入&&输出
CREATE [DEFINER = {user|CURRENT_USER}] PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic...] routine_body
proc_parameter:
[IN|OUT|INOUT] param_name_type
IN 表示该参数的值必须在调用存储过程时指定
OUT,表示该参数的值可以被存储过程改变,并且可以返回
INOUT,表示该参数的调用时指定,并且可以被改变和返回
COMMENT:注释
CONSTRAINS SQL:包含SQL语句,但不包含读或写数据的语句
NO SQL:不包含SQL语句
READS SQL DATA:包含读数据的语句
MODIFIES SQL DATA:包含写数据的语句
SQL SECURITY {DEFINER|INVOKE}指明谁有权限来执行
过程体是由合法的SQL语句构成;
过程体可以是任意SQL语句;
过程体如果为复合结构则使用BEGIN...END 语句
复合结构可以包含声明,循环,控制结构
CREATE PROCEDURE sp1() SELECT VERSION();
CALL sp_name([parameter[,...]])
CALL sp_name[()];
DELIMITER //
CREATE PROCEDURE removeUserByID(IN id INT UNSIGNED)
BEGIN
DELETE FROM users WHERE id = id;
END
//
DROP PROCEDURE removeUserByID
注意事项: