MySQL基础--存储过程和函数

Posted 张紫韩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL基础--存储过程和函数相关的知识,希望对你有一定的参考价值。

  1. 存储过程和函数
    存储过程和函数:类似于java中的方法

    • 好处: .
      1、提高代码的重用性
      2、简化操作

  2. 存储过程

    • 含义:一 组预先编译好的SQL语句的集合,理解成批处理语句
      1、 提高代码的重用性
      2、简化操作
      3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率.

    • 创建语法

      • CREATE PROCEDURE 存储过程名(参数列表)
        BEGIN
        存储过程体(一组合法的sQL语句)
        : END

      • 注意:

        • 参数列表包含三部分
          参数模式参数名参 数类型
          举例:
          IN stuname VARCHAR (20)

        • 参数模式:
          IN:该参数可以作为输入,也就是该参数需要调用方传入值
          OUT:该参数可以作为输出,也就是该参数可以作为返回值
          INOUT:该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值

        •  如果存储过程体仅仅只有一句话,BEGIN END可以省略
          存储过程体中的每条sQL语句的结尾要求必须加分号。
          存储过程的结尾可以使用DELIMITER 重新设置
          语法:
          DELIMITER 结束标记
          案例:
          DELIMITER S

    • 调用
      • call 存储过程名(实参列表);
    • 空参列表存储过程
      • DELIMITER $
        CREATE PROCEDURE myp1 ()
        BBEGIN

        • INSERT INTO admin (username,、password. )
          VALUES(\'john1\', \'0000\'),(\'lily\', \'0000\');

      • END $

      • call myp1();
    •  参数带in类型的参数的存储过程

      • CREATE PROCEDURE myp2 (IN beautyName VARCHAR (20) )
        BEGIN

        • SELECT bo. *
          FROM boys bo
          RIGHT JOIN beauty b ON bo.id = b.boyfriend_ id

      • END $

      • call myp2(\'xxxx\'); 

    • :创建存储过程实现,用户是否登录成功

      • CREATE PROCEDURE myp4 (IN username VARCHAR (20) , IN PASSWORD VARCHAR (20) )
        BEGIN

        • DECLARE result INT DEFAULT 0;#声 明并初始化
          SELECT COUNT(*) INTO result#赋值
          FROM admin
          WHERE
          admin. username = username
          AND admin. password = PASSWORD;
          SELECT IF (result>0, \'成功\',\'失败\') ;#使用

      • END $

      • #调用
        CALL myp3(\'张飞\', \'8888\');

    • 创建带out模式参数的存储类型

      • CREATE PROCEDURE myp5 (IN beautyName VARCHAR(20) , OUT boyName VARCHAR (20) )
        BEGIN

        • SELECT bo. boyName INTO boyName
          FROM boys bo
          INNER JOIN beauty b ON bo.id = b.boyfriend_ id
          WHERE b. name=beautyName ;

      • END $

      • #调用
        CALL myp5(\'小昭\' , @bName) $
        SELECT @bName $

    • 创建带inout模式参数的存储过程

      • CREATE PROCEDURE myp8 (INOUT a INT , INOUT b INT)
        BEGIN

        • SET a=a*2;
          SET b=b*2 ;

      • END $

      • #调用
        SET @m=10$
        SET @n=20$
        CALL myp8 (@m, @n) S
        SELECT @m, @n

              

           

          

以上是关于MySQL基础--存储过程和函数的主要内容,如果未能解决你的问题,请参考以下文章

mysql存储过程基础

MySQL基础_存储过程与函数

mysql基础教程-----事务视图存储过程和函数流程控制

MySQL存储过程和函数

mysql之存储过程基础

Mysql-存储过程