DELIMITER $
CREATE PROCEDURE 存储过程名(IN|OUT|INOUT 参数名 参数类型,...) [characteristics ...]
BEGIN
sql 语句 1;
sql 语句 2;
END $
DELIMITER ;
说明:
1 、参数前面的符号的意思
IN :当前参数为输入参数,也就是表示入参; 存储过程只是读取这个参数的值。如果没有
定义参数种类, 默认就是 IN ,表示输入参数。
OUT :当前参数为输出参数,也就是表示出参; 执行完成之后,调用这个存储过程的客户
端或者应用程序就可以读取这个参数返回的值了。
INOUT :当前参数既可以为输入参数,也可以为输出参数。
2 、形参类型可以是 MySQL 数据库中的任意类型。
3 、 characteristics 表示创建存储过程时指定的对存储过程的约束条件。
4 、存储过程体中可以有多条 SQL 语句,如果仅仅一条 SQL 语句,则可以省略 BEGIN 和
END。编写存储过程并不是一件简单的事情,可能存储过程中需要复杂的 SQL 语句。
5、需要设置新的结束标记。
因为 MySQL 默认的语句结束符号为分号 ‘;’ 。为了避免与存储过程中 SQL 语句结束符相
冲突,需要使用 DELIMITER 改变存储过程的结束符。
比如: “DELIMITER //” 语句的作用是将 MySQL 的结束符设置为 // ,并以 “END //” 结束
存储过程。存储过程定 义完毕之后再使用 “DELIMITER ;” 恢复默认结束符。 DELIMITER 也
可以指定其他符号作为结束符。 当使用 DELIMITER 命令时,应该避免使用反斜杠( ‘\’ )
字符,因为反斜线是 MySQL 的转义字符。
调用存储过程:
存储过程有多种调用方法。存储过程必须使用 CALL 语句调用,并且存储过程和数据库相
关,如果要执行 其他数据库中的存储过程,需要指定数据库名称,例如 CALL
dbname.procname 。
CALL 存储过程名(实参列表)
使用 SHOW CREATE 语句查看存储过程和函数的创建信息
SHOW CREATE {PROCEDURE | FUNCTION} 存储过程名或函数名
使用 SHOW STATUS 语句查看存储过程和函数的状态信息
SHOW {PROCEDURE | FUNCTION} STATUS [LIKE 'pattern']
从 information_schema.Routines 表中查看存储过程和函数的信息
MySQL 中存储过程和函数的信息存储在 information_schema 数据库下的 Routines 表中。
可以通过查询该表 的记录来查询存储过程和函数的信息。其基本语法形式如下:
SELECT *
FROM information_schema.Routines
WHERE ROUTINE_NAME=' 存储过程或函数的名' [AND ROUTINE_TYPE =
评论