MySQL中创建存储过程的完整语法如下:
CREATE [DEFINER = { user | CURRENT_USER }] PROCEDURE proc_name
[ (parameter_list) ]
[ characteristic ... ] routine_body
characteristic:
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
其中,DEFINER用于指定存储过程的执行者,可以是当前用户或指定的用户;parameter_list用于指定存储过程的参数,可以是IN、OUT或INOUT参数;routine_body用于指定存储过程的具体实现,可以是一条或多条SQL语句。
下面是一个示例:
CREATE PROCEDURE GetEmployeeInfo(IN emp_id INT, OUT emp_name VARCHAR(50), OUT emp_salary INT)
BEGIN
SELECT name, salary INTO emp_name, emp_salary
FROM Employee
WHERE id = emp_id;
END
该示例定义了一个名为GetEmployeeInfo的存储过程,该存储过程接受一个IN参数emp_id,并返回两个OUT参数emp_name和emp_salary。存储过程的具体实现是从Employee表中查询给定id的员工信息,并将查询结果赋值给OUT参数。