zoukankan      html  css  js  c++  java
  • MySQL存储过程---基础

    存储过程

    语法

    DELIMITER $$
    
    CREATE PROCEDURE `employees`.`a`(参数列表)
    
        BEGIN
        sql1;
        sql2;
        ...
    END$$ DELIMITER ;

    语法说明

    DELIMITER $$:定义语句结束标记,存储过程体中,每条SQL都使用“;”结束,所有语句作为一个过程体执行,如果过程体中只有一条SQL语句,可以省略begin和end
    
    参数列表:参数模式 参数名 参数类型
    参数模式 :
      IN : 输入参数,单独传参。in 是参数的默认模式,这种模式就是在程序运行的时候已经具有值,在程序体中值不会改变。
      OUT : 输出参数,作为返回值的参数。
      INOUT: 既输入有输出,可做输入也可做输出。

    in 是参数的默认模式,这种模式就是在程序运行的时候已经具有值,在程序体中值不会改变。

    out 模式定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用他的过程

    in out 表示高参数可以向该过程中传递值,也可以将某个值传出去

    调用存储过程

    CALL 存储过程名(实参列表)

    实例

    创建空参数的存储过程

    DELIMITER $$
    
    USE `world`$$
    
    DROP PROCEDURE IF EXISTS `t1`$$
    
    CREATE DEFINER=`root`@`10.0.0.%` PROCEDURE `t1`()
    BEGIN
    SELECT COUNT(*) FROM world.city;
    END$$
    
    DELIMITER ;

     调用

    CALL t1()

    创建带out参数的存储过程

    DELIMITER $$
    
    CREATE
        /*[DEFINER = { user | CURRENT_USER }]*/
        PROCEDURE `world`.`t2`( IN num INT,OUT num1 INT)
        /*LANGUAGE SQL
        | [NOT] DETERMINISTIC
        | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
        | SQL SECURITY { DEFINER | INVOKER }
        | COMMENT 'string'*/
        BEGIN
        INSERT INTO t2 VALUES(num);
        SELECT COUNT(*) INTO num1 FROM t2;
        SELECT num1;
        END$$
    
    DELIMITER ;

    调用

    SET @n2:=0;
    CALL t2(2,@n2)
    SELECT * FROM t2;

    带inout参数的存储过程

    DELIMITER $$
    
    CREATE
        /*[DEFINER = { user | CURRENT_USER }]*/
        PROCEDURE `world`.`t3`( INOUT a INT, INOUT b INT, OUT c INT)
        /*LANGUAGE SQL
        | [NOT] DETERMINISTIC
        | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
        | SQL SECURITY { DEFINER | INVOKER }
        | COMMENT 'string'*/
        BEGIN
        SELECT a*2 INTO a;
        SELECT b*2 INTO b;
        SELECT a+b INTO c;
        SELECT a,b,c;
        END$$
    
    DELIMITER ;

    调用

    SET @a:=5;
    SET @b:=10;
    SET @c:=0;
    CALL t3(@a,@b,@c)
  • 相关阅读:
    spring boot redis 使用代码配置 redis的连接信息
    mysql Last_SQL_Error
    mysql relay log
    idea插件开发
    全网唯一正常能用的centos7 安装mysql5.7.35 22 33 25
    LVM逻辑卷管理器
    git提交代码
    数据中心统一网络实战:FCoE部署指南
    详解HBA、NIC与CNA的区别
    存储网络 – 了解FCoE的八个技术细节
  • 原文地址:https://www.cnblogs.com/zh-dream/p/13088419.html
Copyright © 2011-2022 走看看