一. 创建存储过程的语法结构
CREATE [DEFINER = {user | CURRENT_USER }] PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic...]routine_body proc_parameter: [IN | OUT | INOUT] param_name type
二. 语法结构解释
1. [DEFINER = {user | CURRENT_USER }] 创建者,如果省略,则默认为当前登录用户
2. sp_name:存储过程名字,参数有三个选项:
-
IN:表示该参数的值必须在调用存储过程时指定
-
OUT:表示该参数的值可以被存储过程改变,并且可以返回
-
INOUT:表示该参数的调用时指定,并且可以被改变和返回
3. [characteristic…]routine_body 特性:
COMMENT 'string' | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY {DEFINER | INVOKER }
-
COMMENT:注释
-
CONTAINS SQL:包含SQL语句,但不包含读或写数据的语句
-
NO SQL:不包含SQL语句
-
READS SQL DATA:包含读数据的语句
-
MODIFIES SQL DATA:包含写数据的语句
-
SQL SECURITY {DEFINER| INVOKER }指明谁有权限来执行
4. 自定义函数有函数体,存储过程也有过程体
-
过程体由合法的SQL语句构成
-
过程体可以是‘任意’SQL语句
-
复合解耦股可以包含声明,循环,控制结构
-
过程体如果为复合结构则使用BEGIN…END语句
请登录之后再进行评论