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参数。