在讲存储过程前先讲讲delimiter;
delimiter其实就是告诉MySQL解释器,该段命令是否已经结束,MySQL数据库是否可以执行。默认情况下,delimiter是分号。在命令行客户端中,如果有一行命令以分号结束,
那么回车后,MySQL将会执行该命令。
但有些时候碰到英文分号,我们并不希望立即执行,我们可修改分隔符来保证代码统一执行,例如存储过程;
存储过程的结果很简单:
语法:CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 ...] 过程体
call 过程名 调用存储过程
下面的例子没有参数:
DELIMITER $$ -- 修改结束符保证存储过程是一个整体
USE `test1`$$ -- 存储 过程在哪个数据库下,直接在当前数据库下建存储过程,此行可省略
DROP PROCEDURE IF EXISTS `sp`$$-- 当存储过程存在时先删除,保证存储过程的内容能执行
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp`()-- definer指定用户和地址,definer
BEGIN
CREATE TABLE IF NOT EXISTS student(
id INT,
stu_name VARCHAR(10),
class INT(2)
);
END$$
DELIMITER ;
call sp();则会执行存储过程中的语句,本例为当student表不存在就新建表;