首页 > 数据库技术 > 详细

MySQL存储过程

时间:2019-08-02 10:51:57      阅读:106      评论:0      收藏:0      [点我收藏+]

存储过程

存储程序(英语:Stored Procedure),又称为存储过程,是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象,它可以视为数据库中的一种函数或子程序。

优点

  • 存储程序可封装,并隐藏复杂的商业逻辑。
  • 存储程序可以回传值,并可以接受参数。
  • 存储程序无法使用 SELECT 指令来运行,因为它是子程序,与查看表数据表或用户定义函数不同。
  • 存储程序可以用在数据检验,强制实行商业逻辑等。

缺点

  • 存储程序,往往定制于特定的数据库上,因为支持的编程语言不同。当切换到其他厂商的数据库系统时,需要重写原有的存储程序。
  • 存储程序的性能调校与撰写,受限于各种数据库系统。

创建语法

CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
    存储过程体(一组合法的SQL语句)
END
  • 参数列表包含三部分

    • 参数模式
      • IN 该参数可以作为输入,即参数需要调用方传入
      • OUT 该参数可以作为输出,即参数可以作为返回值
      • INOUT 该参数既可以作为输入又可以作为输出,即参数既需要传入值,又可以返回值
    • 参数名
    • 参数类型
  • 如果存储过程只有一句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$
#调用存储过程

IN模式参数的存储过程

#输入账号密码检查是否登陆成功
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 $

OUT模式参数的存储过程

#根据输入名字在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$
#打印用户变量

INOUT模式参数的存储过程

#将传入两个值各加一
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 存储过程名;

MySQL存储过程

原文:https://www.cnblogs.com/redo19990701/p/11286683.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!