一、PROCEDURE:
PROCEDURE,事务,一个存储过程,实际上就是在服务器端直接在数据库中编写一段代码作运算,在服务器端进行高效的运算,运算结果直接返还给客户端。
它和FUNCTION一个明显的不同点是,FUNCTION最后会有RETURN语句,返回运算结果,PROCEDURE不允许有RETURN语句的,但是可以在参数表中指定返还数据。
PROCEDURE编译完成后会存储在数据库中,需要调用的时候使用CALL语句对事务或者函数进行调用。编写PROCEDURE不仅可以避免重复编码,同时还可以提高计算效率。
二、CREATE PROCEDURE基本语法:
下面不妨先看一看CREATE PROCEDURE以及CREATE FUNCTION的语法:
1 CREATE
2 [DEFINER = { user | CURRENT_USER }]
3 PROCEDURE sp_name ([proc_parameter[,...]])4 [characteristic ...]routine_body5 CREATE
6 [DEFINER = { user | CURRENT_USER }]
7 FUNCTION sp_name ([func_parameter[,...]])8 RETURNStype9 [characteristic ...]routine_body10 proc_parameter:11 [IN | OUT | INOUT]param_name type12 func_parameter:13 param_name type14 type:15 Anyvalid MySQL data type16 characteristic:17 COMMENT 'string'
18 |LANGUAGE SQL19 | [NOT]DETERMINISTIC20 | { CONTAINS SQL | NO SQL | READS SQL DATA |MODIFIES SQL DATA }21 | SQL SECURITY { DEFINER |INVOKER }22 routine_body:23 Valid SQL routine statement
View Code
其中有几个注意点是:
1,DEFINER你可以用这个选项指定可以调用该PROCEDURE的用户,比如说允许本地的用户nero使用,那么可以指定为:DEFINER='nero'@'localhost',如果这个事务就是创建给当前用户使用的,那么可以指定为:DEFINER=CURRENT_USER。
2,事务安全性:characteristic中如果使用了SQL SECURITY,那么事务每次执行的时候,指定的安全上下文都会被执行,它们会检查当前