存储程序(英语:Stored Procedure),又称为存储过程,是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象,它可以视为数据库中的一种函数或子程序。
CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
存储过程体(一组合法的SQL语句)
END
参数列表包含三部分
如果存储过程只有一句SQL语句,BEGIN,END可以省略
存储过程中的每条SQL语句的结尾都必须加分号
存储过程的结尾可以使用DELIMITER重新设置
DELIMITER 结束标记
#示例
DELIMITER $
CALL 存储过程名(实参列表);
#向account中插入一行数据
delimiter $
#将结束符临时换为$
CREATE PROCEDURE inser_acc()
#空参
BEGIN
INSERT INTO account VALUES('B-611','haitang',250);
END $
#存储过程结束
CALL inser_acc$
#调用存储过程
#输入账号密码检查是否登陆成功
delimiter $
#将结束符临时换为$
CREATE PROCEDURE log_in(IN username VARCHAR(20),IN password VARCHAR(20))
BEGIN
DECLARE result INT DEFAULT 0;
#声明并初始化
SELECT COUNT(*) INTO result
#赋值
FROM admin a
WHERE a.username=username AND a.password=password;
SELECT IF(result>0,'登陆成功','登陆失败');
#打印结果
END $
#根据输入名字在employees表中查询其工资
delimiter $
#将结束符临时换为$
CREATE PROCEDURE get_sal(IN name VARCHAR(20),OUT sal INT)
BEGIN
SELECT e.salary INTO sal
FROM employees e
WHERE e.name=name;
END $
SET @sal=0$
#声明初始化用户变量
CALL get_sal('小明',@sal)$
#调用存储过程
SELECT @sal$
#打印用户变量
#将传入两个值各加一
delimiter $
#临时将结束符转换为$
CREATE PROCEDURE plus_one(INOUT a INT,INOUT b INT)
BEGIN
SET a=a+1;
SET b=b+1;
END $
SET @a=1$
#声明并初始化两个用户变量
SET @b=2$
CALL plus_one(@a,@b)$
#调用
SELECT @a,@b$
#打印
DROP PROCEDURE 存储过程名;
#一次只能删除一个
SHOW CREATE PROCEDURE 存储过程名;
原文:https://www.cnblogs.com/redo19990701/p/11286683.html